【发布时间】:2014-09-30 09:23:45
【问题描述】:
我有一个包含字母 ('øæå') 的 txt 文档,我希望这个脚本能够识别这些字母并将它们正确地写入 csv 文件。
with codecs.open('transaksjonliste.txt', 'r', 'ISO-8859-1') as file:
for line in file:
line = file.readline()
lineS = line.encode('ISO-8859-1', 'ignore').decode('utf-8')
splitTab = lineS.split(';')
for s in splitTab:
newS = s[1:-1]
date = splitTab[0].replace('.', '/')
insertList = [date,]
out.writerow(date)
给予:
File "Q:\DropBox\Development\Scripts\tes2.py", line 17, in <module>
lineS = line.encode('ISO-8859-1', 'ignore').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 14: invalid start byte
【问题讨论】:
-
为什么你们都在循环和调用
readline()?为什么先编码为 Latin-1,然后再从 UTF-8 解码?您的数据没有错误编码,奇怪的舞蹈是导致您异常的原因。 -
你也忽略了
insertList,也没有告诉我们out是什么;那是csv.writer()对象吗? -
对不起我的无知。不知道不需要调用 readline()。 @MartijnPieters insertList 正在进行中,但不应该是这里的问题。是的,输出是一个 csv.writer() 对象。感谢提醒