在python 3.2中读希伯来语

时间:2013-04-30 05:50:56

标签: python python-3.x hebrew

我有一个希伯来语(.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`

为什么会这样?如何以一种我可以分隔每行到日期和文本的方式阅读文件?

1 个答案:

答案 0 :(得分:1)

您已在文本模式下使用编码打开文件,因此已经解码。您无需再次解码。

现在文本看起来没有被正确解码,表明文本可能首先不在cp037中。尝试打开二进制模式,然后告诉我们文件的样子。

(事实上,我尝试过使用UTF-8,这很有用。文件是UTF-8,所以只需将cp037更改为'UTF-8'即可。)