我是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
任何暗示?提前谢谢。
答案 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)