从 python 中的 "requests" 模块写入文件时添加不必要的字符
Adding unnecessary character when writing to a file from "requests" module in 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
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
将逐行读取文件,包括行尾字符,并在读取时将每一行存储在 a 中。如果你不想要这个角色,那你就得把它去掉。
%0A
是 unix 风格系统上的 "newline" 字符(但它被称为 "line feed" 字符)。 Windows 系统使用回车 return 和换行 (%0D%0A
) 的组合。
希望对您有所帮助!不,这不是你的错。
我有一个文本文件,每行 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
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
将逐行读取文件,包括行尾字符,并在读取时将每一行存储在 a 中。如果你不想要这个角色,那你就得把它去掉。
%0A
是 unix 风格系统上的 "newline" 字符(但它被称为 "line feed" 字符)。 Windows 系统使用回车 return 和换行 (%0D%0A
) 的组合。
希望对您有所帮助!不,这不是你的错。