如何在python中读取和写入阿拉伯文件

时间:2017-09-27 09:51:11

标签: python python-2.7

我是Python的初学者。我使用的是Python 2.7.3。我尝试阅读阿拉伯语文本,为我的程序创意做一些处理。

但它打印出不可读的输出

这是我的代码的脚本:

>>> fname = open (r"C:\Python27\نجود.txt ", "rb")
>>> text = fname.read()
>>> print text
ï»؟ط§ظ„ط³ظ„ط§ظ… ط¹ظ„ظٹظƒظ… ط£ظ†ط§ ط¨طµط¯ط¯ طھط¬ط±ط¨ط© ظ‡ط°ط§ 
ط§ظ„ط¨ط±ظ†ط§ظ…ط¬ ظپظٹ ط¨ط§ظٹط«ظˆظ†. ط¨ط§ظٹط«ظˆظ† ط±ط§ط¦ط¹ ظˆط¬ظ…ظٹظ„, ``ظˆظ„ظƒظ† طھط¬ط±ط¨ط© ط¨ط§ظٹط«ظˆظ† ظ…ط¹ ط§ظ„ط¹ط±ط¨ظٹ ط³طھظƒظˆظ† ظ…ط®طھظ„ظپط©!. ط¨ط§ظٹط«ظˆظ† ط±ط§ط¦ط¹ ظˆظٹط³طھط­ظ‚ ط§ظ„طھط¬ط±ط¨ط©.

我尝试了许多解决方案,如:

text= fname.encoding() #or encode , but it did not work and gave me this error:
########
text= fname.encoding()
TypeError: 'NoneType' object is not callable

尝试将# encoding: utf-8放在代码文件的顶部,但它没有给出任何更改。

也尝试这样做:

fname = open (r"C:\Python27\نجود.txt ", "r", encoding='utf-8')

但它给了我这个错误:

fname = open (r"C:\Python27\نجود.txt ", "r", encoding='utf-8')
 TypeError: 'encoding' is an invalid keyword argument for this function

任何暗示?提前谢谢。

2 个答案:

答案 0 :(得分:0)

从文件中读取将返回str,在Python2中,它是一个任意字节字符串(可能是UTF-8编码的unicode字符串,但它也可能是二进制数据,如内容JPG文件或类似文件。)

如果你知道它是一个UTF-8编码的字符串,你应该解码它:

decoded = text.decode('utf8')

这将生成一个unicode对象,该对象是一串unicode字符。如果你处理这个,Python将尝试正确地做所有事情。 E. g。根据您的终端,打印这应该按预期工作:

print decoded

答案 1 :(得分:0)

首先,您需要以正确的编码方式打开文件。 Windows上的阿拉伯语通常为windows-1256,有时也可能为utf-8

对于2.7.3,请确保正确打开文件:

import io

with io.open(r"C:\Python27\نجود.txt ", "r", encoding="utf-8") as f:
    for line in f:
       print(line)