用Python读取阿拉伯文件

2024-04-23 15:54:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个阿拉伯语文本文件,它是一个语料库。

我应该怎么做才能用python导入文件,这样我就可以轻松地访问文件并对其进行分析,而不是每次都在解释器中复制和粘贴内容。这是阿拉伯文件,不是英语。


Tags: 文件内容粘贴解释器语料库文本文件
3条回答

读写纯文本时,最重要的是知道并指定纯文本encoding。您不应该让Pythonguesses为您进行编码,特别是在实际程序中(编码应该是可配置的,或者您要求用户进行编码)。

许多人对英文文本没有异议,因为ASCII是大多数编码的子集。问题就在那里,一旦程序试图读或写不同编码的文本,它们就会遇到这个问题。

大多数阿拉伯语文本的编码方式是(按流行程度排序的)使用Windows-1256UTF-8CP720ISO 8859-6。您应该提前知道您的纯文本使用的编码是什么,例如,当大多数文本编辑器允许您在保存文件时选择编码时。

我有三个名为طارق的文件,但有三种不同的编码。将这些文件作为原始二进制数据读取会显示这些文件的不同之处,尽管它们是相同的文本:

>>> f = open('file-utf8.txt', 'rb')
>>> f.read()
b'\xd8\xb7\xd8\xa7\xd8\xb1\xd9\x82'
>>>
>>> f = open('file-cp720.txt', 'rb')
>>> f.read()
b'\xe1\x9f\xa9\xe7'
>>>
>>> f = open('file-windows1256.txt', 'rb')
>>> f.read()
b'\xd8\xc7\xd1\xde'
>>>

读取这些文件的正确方法是告诉Python应该使用什么编码,以便将其解码为internal Unicode representation(使用/Python33/Lib/encodings/中的映射表):

>>> f = open('file-utf8.txt', encoding='utf-8')
>>> f.read()
'طارق'
>>>
>>> f = open('file-cp720.txt', encoding='cp720')
>>> f.read()
'طارق'
>>>
>>> f = open('file-windows1256.txt', encoding='windows-1256')
>>> f.read()
'طارق'
>>>

编码问题不仅与文件有关。每当您从外部源向程序(如文件、控制台、网络套接字)读取文本时,必须知道编码。另外,当您向外部源代码写入时,必须将文本编码为正确的编码。

编码必须是一致的,如果您的控制台使用拉丁语-1,并且您试图写入控制台,即打印,您将得到一些无意义的单词,或者,如果您幸运,您将得到UnicodeEncodeError异常。

有很多猜测编码的方法,但我不会费心去使用它们,因为它们只会掩盖问题。迟早会来的。

1如果由您决定,请始终使用UTF-8,因为它得到了很好的支持。

阿拉伯语通常用Unicode表示。

通常,您可以在中读取文件,然后转换为Unicode:

import codecs
f = codecs.open('unicode.rst', encoding='utf-8')
for line in f:
    print repr(line)

有关详细信息,请参阅https://docs.python.org/2/howto/unicode.html#reading-and-writing-unicode-data

在Python中读取Urdu文件时使用此选项:

File = open("Infixes.txt",encoding = "utf-8")
print(File.read())

相关问题 更多 >