我正在使用requests
库从URL读取文本文件,例如:
import requests
response = requests.get('https://example.com/file.txt')
result = list(response.text.splitlines())
但是文件的某些行包含 Unicode 字符(斯拉夫符号)。 然后我无法正确使用此字符串,因为它在读取后似乎已损坏。 在这种情况下,正确的方法是什么?
response.text
由response.encoding
提供支持,在没有适当的Content-type: ...; charset=...
标头的情况下,它被chardet
或charset_normalizer
模块内部由请求猜测(并公开为response.apparent_encoding
)。(据我所知,这种猜测将在更高版本的请求中弃用。
有时自动检测失败,你会变得胡言乱语(就像你这样做一样),你需要自己弄清楚编码是什么,或者:
- 执行
response.content.decode('some-encoding')
或 - 设置
response.encoding = 'some-encoding'
,之后response.text
将使用该编码。