Eu tenho alguns hiperlinks em um arquivo de texto. Quero comparar o link da primeira linha com a próxima linha adjacente e criar links conforme o número? Por exemplo,
Considere os links adjacentes abaixo
https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/4/
Aqui o arquivo de saída será:
https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/2/
https://gp.to/ab/394/las69-02-09-2020/3/
https://gp.to/ab/394/las69-02-09-2020/4/
Da mesma forma, preciso fazer para outras linhas....
Exemplo de entrada:
https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/4/
https://gp.to/ab/563/dimp-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/3/
https://gp.to/ab/39443/lis-22-04-2018/
https://gp.to/ab/39443/lis-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/
https://gp.to/ab/39443/madi-22-04-2018/5/
Exemplo de saída:
https://gp.to/ab/394/las69-02-09-2020/
https://gp.to/ab/394/las69-02-09-2020/2/
https://gp.to/ab/394/las69-02-09-2020/3/
https://gp.to/ab/394/las69-02-09-2020/4/
https://gp.to/ab/563/dimp-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/
https://gp.to/ab/39443/omegs-02-07-2023/2/
https://gp.to/ab/39443/omegs-02-07-2023/3/
https://gp.to/ab/39443/lis-22-04-2018/
https://gp.to/ab/39443/lis-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/
https://gp.to/ab/39443/madi-22-04-2018/2/
https://gp.to/ab/39443/madi-22-04-2018/3/
https://gp.to/ab/39443/madi-22-04-2018/4/
https://gp.to/ab/39443/madi-22-04-2018/5/
Tentei..
# Function to extract the number from a URL
def extract_number(url):
parts = url.split('/')
for part in parts[::-1]:
if part.isdigit():
return int(part)
return None
# Read the input file
with open('input.txt', 'r') as input_file:
lines = input_file.readlines()
output_lines = []
# Iterate through the input lines and generate output lines
for i in range(len(lines)):
current_url = lines[i].strip()
output_lines.append(current_url)
if i + 1 < len(lines):
next_url = lines[i + 1].strip()
current_number = extract_number(current_url)
next_number = extract_number(next_url)
if current_number is not None and next_number is not None:
for num in range(current_number + 1, next_number):
new_url = current_url.rsplit('/', 1)[0] + '/' + str(num) + '/'
output_lines.append(new_url)
# Write the output to a file
with open('output.txt', 'w') as output_file:
output_file.writelines(output_lines)
Mas não obtive o resultado desejado.
Aqui está uma maneira em R de como poderíamos abordar o problema. Criamos uma função
extrapolate_link
e usamospurrr::accumulate
nela. Então nósunlist
os resultados.Criado em 01/09/2023 com reprex v2.0.2
Aqui está outra alternativa. Ele assume que a ordem é relevante, portanto, se o mesmo URL (ou base dele, sem o número final) for encontrado com URLs intermediários diferentes, será "novo".
Dados