我认为我的文件可能是混合编码,而且它是一个非常奇怪的文件。当我打开一个更正常编码的文件时,我制作的程序工作正常。在过去的4个小时里,我一直非常困惑如何使其正常工作。 实际上可能比4>。>。
长得多import os
os.chdir("C:\\Users\\Kingsaber\\documents\\Desktop\\coding")
with open("file1.txt", "r", encoding = "utf-8") as a:
line1 = a.read().splitlines()
with open("file2.txt", "r", encoding = "utf-8") as b:
line2 = b.read().splitlines()
temp3 = tuple(set(line1) - set(line2))
print(temp3)
changes = open("output.txt", "w")
temp3 = list(temp3)
with open("output.txt", 'w') as file_handler:
for item in temp3:
file_handler.write("{}\n".format(item))
Python抛出错误
Traceback (most recent call last):
File "C:\Users\Kingsaber\Documents\Desktop\diff2.py", line 11, in <module>
line1 = a.read().splitlines()
File "C:\Python34\lib\codecs.py", line 313, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 725130-725131: invalid continuation byte`
这个想法是打开2个非常大的文件,包含大约100000行代码,并将文件1与文件2进行比较,以获得唯一的行。我发现有人使用套装来做这个,到目前为止,我用记事本创建的快速txt文件测试后它运行良好。
我试图打开的文件似乎在其中包含utf-8的无效字节。我想在将它们传递给元组之前删除这些invaid字节。任何帮助将是非常有必要的,因为我实际上试图谷歌正确的方式来做到这一点,但没有找到或理解正确的解决方案。我会实际链接其中一个文件,以防它有所帮助,因为它非常不正常。还有一种方法可以实际检查记事本++中无效的字节。我很想知道导致错误的原因。在notepad ++中查看文件作为utf-8编码文件似乎显示正常文本。
http://www.mediafire.com/file/5uax2g962ad1ali/file1.txt
有没有办法让python忽略这些字节?
答案 0 :(得分:4)
您的问题可归结为
text = open("file1.txt", "r", encoding = "utf-8").read()
您可以通过更改解码器处理错误的方式来解决此问题。选择是&#34;严格&#34; (默认),&#34;替换&#34; (放入)和&#34;忽略&#34; (跳跃)。 UTF-8有一个有趣的属性,它可以找出下一个角色的开始位置,所以你不应该松动太多。
...你可以从get go
制作套装with open("file1.txt", "r", encoding = "utf-8", errors="replace") as a:
set1 = set(a)