我一直在尝试在python中将一堆文本文件批量编辑为utf-8,并且此错误不断弹出。有没有办法在一些python scrips或bash命令中替换它们? 我用了代码:
writer = codecs.open(os.path.join(wrd, 'dict.en'), 'wtr', 'utf-8')
for infile in glob.glob(os.path.join(wrd,'*.txt')):
print infile
for line in open(infile):
writer.write(line.encode('utf-8'))
并且遇到了这些错误:
Traceback (most recent call last):
File "dicting.py", line 30, in <module>
writer.write(line2.encode('utf-8'))
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 216: unexpected code byte
答案 0 :(得分:11)
好的,第一点:您的输出文件设置为自动编码写入utf-8
的文本,因此在将参数传递给{{1}时不要包含显式的encode('utf-8')
方法调用方法。
所以首先要尝试的是在内循环中使用以下内容:
write()
如果这不起作用,那么问题几乎可以肯定是,正如其他人所说,你没有正确解码你的输入文件。
猜测并假设您的输入文件是在writer.write(line)
中编码的,您可以尝试在内循环中快速测试以下内容:
cp1252
次要点:'wtr'是一个无意义的模式字符串(因为写访问意味着读访问)。将其简化为'wt'或甚至只是'w'。
答案 1 :(得分:3)
你在那里省略了一些代码吗?您正在阅读line
,但尝试重新编码line2
。
无论如何,你将不得不告诉Python输入文件的编码是什么;如果你不知道,那么你将不得不在没有编解码器帮助的情况下打开它并进行替换。
答案 2 :(得分:-3)
请认真 - 一个简单的replace()操作将完成这项工作:
line = line.replace(chr(0xa0), '')
此外,codecs.open()构造函数支持要处理的'errors'参数 转换错误。请(自己)阅读。