如何让Python解析以下文本?
我有一个文本样本:如何让Python解析以下文本?,python,ascii,python-unicode,Python,Ascii,Python Unicode,我有一个文本样本: "PROTECTING-ħarsien", 我正试图用以下内容进行解析 import csv, json with open('./dict.txt') as maltese: entries = maltese.readlines() for entry in entries: tokens = entry.replace('"', '').replace(",", "").replace("\r\n", "").split("-")
"PROTECTING-ħarsien",
我正试图用以下内容进行解析
import csv, json
with open('./dict.txt') as maltese:
entries = maltese.readlines()
for entry in entries:
tokens = entry.replace('"', '').replace(",", "").replace("\r\n", "").split("-")
if len(tokens) == 1:
pass
else:
print tokens[0] + "," + unicode(tokens[1])
但我收到一条错误信息
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128)
我做错了什么?您必须将最后一行更改为(这已被测试用于处理您的数据): 如果没有
utf8
,Python会假定源代码是ascii
编码,因此会出现错误
参见似乎
dict.txt
是UTF-8编码的(ħ
是0xc4 0xa7
)
那么,你应该:
然后将使用Unicode字符串而不是ByTestRing;因此,您不需要对它们调用
unicode()
,但您可能需要将它们重新编码为您要输出到的终端的编码。我尝试过这个建议,但仍然会遇到相同的错误。还有什么我可能做错的吗?在输出之前,您是否将字符串重新编码为终端的编码?
print tokens[0] + "," + unicode(tokens[1], 'utf8')
import codecs
with codecs.open('./dict.txt', encoding="utf-8") as maltese:
# etc.