Добавление ненужного символа при записи в файл из модуля "запросы" в Python
У меня есть текстовый файл, состоящий из 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 ответа
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()
for a in add
собирается читать файл построчно, включая символы конца строки, и сохранять каждую строку в виде, как он прочитан. Если вы не хотите, чтобы персонаж, то вы должны удалить его.
%0A
является символом "новой строки" в системах Unix-стиля (но он называется символом перевода строки). Системы Windows используют комбинацию возврата каретки и перевода строки (%0D%0A
).
Надеюсь, это поможет! И нет, это не твоя вина.