如何避免换行编码? [复制]
Posted
技术标签:
【中文标题】如何避免换行编码? [复制]【英文标题】:How can I avoid line break coding? [duplicate] 【发布时间】:2019-12-02 14:58:58 【问题描述】:我正在创建一个循环来发送从 txt 文件获取数据的 HTTP 请求,但在变量中我得到一个我不知道如何删除的换行符:
import requests
file = open("uuids.txt", "r")
for uuid in file:
url = 'http://ip:port/api/assets/changeAssetTemplates/'.format(uuid)
headers =
...
print(url)
response = requests.request("GET", url, headers=headers)
print(response.text)
第一个印刷品是这样画的:
http://ip:port/api/assets/changeAssetTemplates/f4c71dd5-13af-428a-a3a5-4cbaf10d9bd3
一个好的网址。但是第二个打印显示了请求中的错误:
"timestamp":1563971402621,"status":404,"error":"Not Found","message":"No message available","path":"/api/assets/changeAssetTemplates/f4c71dd5-13af-428a-a3a5-4cbaf10d9bd3%0A"
我们可以看到从 uuid 变量中获取的数据正在换行 (%0A),我想知道如何避免这个问题。
顺便说一个uuids.txt的例子:
f4c71dd5-13af-428a-a3a5-4cbaf10d9bd3
1a71d6dc-a9b3-43fa-b675-747af9d7c202
2465ea64-3334-44b1-8f23-16e4df3aeea1
2fb98bba-d03d-495a-b5a2-9656bf623854
7a2aca40-dc5c-4aec-b700-7d0a91d39dd8
983ce44b-ab24-49bb-b128-8a30712dc2ca
2487e2ed-bff5-4195-ab5e-875210e634b0
965c62da-7c7a-4bf3-a0b8-de60d9b392dd
8b9bcf8c-0163-48cc-8603-3447ab7f29f6
0a7a5db9-67be-4a2a-af58-0189565caa2d
【问题讨论】:
【参考方案1】:您可以简单地删除 uuid 中的最少字符:
url = 'http://ip:port/api/assets/changeAssetTemplates/'.format(uuid[:-1])
另一种解决方案:
url = 'http://ip:port/api/assets/changeAssetTemplates/'.format(uuid.rstrip("\n"))
PS:readline方法的Python文档https://docs.python.org/3.3/tutorial/inputoutput.html:
f.readline() 从文件中读取一行;换行符 (\n) 留在字符串的末尾,仅在最后一个省略 如果文件不以换行符结尾,则为文件的行。这使得 返回值明确;如果 f.readline() 返回一个空字符串,则 已到达文件末尾,而空行表示为 '\n',一个只包含一个换行符的字符串。
【讨论】:
【参考方案2】:只需像这样从 uuid 中删除换行符:
for uuid in file:
url = 'http://ip:port/api/assets/changeAssetTemplates/'.format(uuid.replace('\n',''))
headers =
...
print(url)
response = requests.request("GET", url, headers=headers)
print(response.text)
如果您在 Windows 上请注意,换行符可能是 '\r\n'
而不是 '\n'
;
【讨论】:
uuid = uuid.strip()
是删除所有尾随和前导空格的 Pythonesque 方式,它也处理 \r\n
。以上是关于如何避免换行编码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章