我正在尝试使用 urllib 和 urllib2 从一个包含法语字符的文本文件中读取数据,例如“é”、“à”等。
def load(url):
from urllib2 import Request, urlopen, URLError, HTTPError
req = Request(url)
f = urlopen(req)
f.readline()
for line in f:
line = line.split('\t')
word = line[0].encode('utf-8')
我觉得 read() 方法返回一个字节字符串,所以我使用 encode('utf-8') 来获取 unicode 值,但这给了我以下错误
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 6: ordinal not in range(128)
有人能告诉我这是怎么回事吗?任何帮助,将不胜感激。谢谢!
最佳答案
是的,您正在从文件中读取字节。您必须做的是解码,而不是编码,将字节字符串转换为 Unicode。你看,它已经编码了。如果不是,则您无需对其执行任何操作。
word = unicode(line[0], "utf8")
您必须指定文件中使用的编码。如果它不是utf8
,另一个可能是latin1
。或者,你知道,因为它是一个 Web 文档,你可以从标题和/或其内容中提取文档的编码,但这有点超出你的问题范围。
关于python - 从 URL 读取 unicode 文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206169/