我有一个希伯来语(.txt)的对话日志。我使用f=open("./WhatsApp.txt",'r',encoding="cp037")
打开了文件。在文件中,每行文本都包含日期和文本(例如:14/01/13 12:10:52:דנינרדפייטרס:איילתיארעה)。我定义了a=f.readlines()
,这就是问题所在:
>>> a[0]
'Õ]×\x91\x94\x07\x90\x91\x07\x91\x93\x80\x91\x16\x9a\x91\x90\x9a\x91\x04\x9a\x80SØ¡\x8b\x99\x04\x16\x80\x95\x90\x05\x16\x96\x94\x05\x91\x90\x98\x04SØÐ\x9a\x80PmPsPrPxPy\x80PzPmPjPpPrPyPnP¡\x80PmPrPn\x80PlPÆPnPxPyPqPrPnP¡\x80PnPæP°\x80PÆPzPnPpPlPnP¡\n'
我试图解码这个(我希望有日期并从这个字符串中获取它们很难),我做了codecs.decode(a[0],"cp037")
,我得到了
`Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
codecs.decode(a[0],"cp037")
File "C:\Python32\lib\encodings\cp037.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
TypeError: 'str' does not support the buffer interface`
为什么会这样?如何以一种我可以分隔每行到日期和文本的方式阅读文件?
答案 0 :(得分:1)
您已在文本模式下使用编码打开文件,因此已经解码。您无需再次解码。
现在文本看起来没有被正确解码,表明文本可能首先不在cp037中。尝试打开二进制模式,然后告诉我们文件的样子。
(事实上,我尝试过使用UTF-8,这很有用。文件是UTF-8,所以只需将cp037更改为'UTF-8'即可。)