我是初学者,无法在Python 2.7中将数十个(简体)中文字符解码为UTF-8的数十个CSV文件。
我不知道输入文件的编码,所以我尝试了所有可能的编码 - GB18030,UTF-7,UTF-8,UTF-16& UTF-32(LE& BE)。此外,为了更好的衡量,GBK和GB3212,虽然这些应该是GB18030的子集。当UTF到达第一个汉字时,它们都会停止。除GB18030外,其他编码在第一行的某处停止。我认为这将是解决方案,因为它读取了前几个文件并解码它们。我的部分代码,逐行阅读,是:
line = line.decode("GB18030")
我尝试解码的前两个文件工作正常。在第三个文件的中途,Python吐出
UnicodeDecodeError: 'gb18030' codec can't decode bytes in position 168-169: illegal multibyte sequence
在这个文件中,大约有一百万行中有大约5个这样的错误。
我在文本编辑器中打开输入文件并检查哪些字符给出了解码错误,前几个字符在CSV文件的特定列中都有欧元符号。我相信这些是拼写错误,所以我只想删除欧元字符。我想逐个检查编码错误的类型;我想摆脱所有的欧元错误,但在我先看看它们之前不想忽略别人。
编辑:我使用了chardet
,它将GB2312作为编码,所有文件的置信度为.99。我尝试使用GB2312进行解码,其中包含:
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 108-109: illegal multibyte sequence
答案 0 :(得分:8)
答案 1 :(得分:1)
您可以尝试chardet。
答案 2 :(得分:0)
试试这个:
codecs.open(file, encoding='gb18030', errors='replace')
不要忘记参数errors
,您也可以将其设置为'忽略'。