Добавление ненужного символа при записи в файл из модуля «запросы» в Python - PullRequest
0 голосов
/ 02 марта 2019

У меня есть текстовый файл, состоящий из URL в каждой строке следующим образом:

https://www.google.com
https://www.facebook.com
https://www.gmail.com

Я использую следующий скрипт:

import requests

add = open("manual_list.txt","r")

for a in add:
  response = requests.get(a, timeout=(2, 5), verify=False)
  fout = open("mylist.txt","a")
  fout.write(response.url+"\n")
  fout.close()

Проблема заключается в том, когда я пишу полученный URLв файл, я получаю дополнительные %0A в конце каждой строки.Не могли бы вы объяснить мне, почему это происходит?

Проблема может быть решена добавлением к входу функции strip:

response = requests.get(add.strip(), timeout=(2, 5), verify=False)

Мои вопросы:

1) Не могу понять, зачем это нужно?

2) Поиск около %0A, переводит символ перевода строки.Это отличается от символа новой строки.Можете ли вы объяснить, как это добавлено?Это вина моего списка или библиотека?

Я использовал тот же список с другими программами, и у меня, похоже, нет подобных проблем.Почему здесь проблематично?это вина библиотеки?или ошибка списка?

РЕДАКТИРОВАТЬ : я использую Ubuntu 18.04 и python 3.6.5

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

for a in add будет считывать файл построчно, включая символы конца строки, и сохранять каждую строку в виде как прочитанное.Если вам не нужен символ, вам придется удалить его.

%0A - это символ "новой строки" в системах Unix-стиля (но он называется символом "перевод строки").Системы Windows используют комбинацию возврата каретки и перевода строки (%0D%0A).

Надеюсь, это поможет!И нет, это не твоя вина.

0 голосов
/ 02 марта 2019
requests.get(add, timeout=(2, 5), verify=False)

вероятно должно быть

requests.get(a, timeout=(2, 5), verify=False)

Можете ли вы попробовать еще раз с этим изменением?

РЕДАКТИРОВАТЬ:

with open("url_list.txt","r") as f:
    content = f.readlines()
print(content)

распечатает

['https://www.google.com\n', 'https://www.facebook.com\n', 'https://www.gmail.com\n']

Здесь вы можете видеть, что ваши строки в вашем файле имеют '\ n', это нормально. Это просто говорит программе, где должна начинаться новая строка.Вот почему вам нужен .strip ()

...