Добавление ненужного символа при записи в файл из модуля "запросы" в 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).

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

Другие вопросы по тегам