2017-09-27 7 views
0

私はPythonの初心者です。私はPython 2.7.3を使用しています。私はプログラムのアイデアのためにアラビア語の文章からいくつかのプロセスを読むことを試みました。Pythonでアラビア語のファイルを読み書きする方法

それが読めない出力

が、これは私のコードのスクリプトで出力します。

>>> 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') 
TypeError: 'encoding' is an invalid keyword argument for this function 

任意のsuggesions:

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

しかし、それは私に、このエラーを与えましたか?前もって感謝します。

+0

ネッドBatchelderによるPythonでエンコーディングのブリリアントビデオ:https://www.youtube.com/watch?v=sgHbC6udIqc –

+0

Unicodeに関する公式のPythonのドキュメントを読むことをお勧めします:https://docs.python.org/2/howto/unicode.htmlこのように、何が起こっているのかをはっきりと理解できます。 – user54

答えて

0

ファイルを読むとstrが返されます。これはPython2で任意のバイト文字列(Unicode文字のUTF-8エンコード文字列かもしれませんが、JPGファイルの内容のようなバイナリデータでもかまいません)または類似)。

あなたはそれが文字のUTF-8でエンコードされた文字列であることがわかっている場合、あなたはにそれをデコードする必要があります。

decoded = text.decode('utf8') 

これは、Unicode文字の文字列であるunicodeオブジェクトを生成します。これを処理すると、Pythonはすべてを適切に処理しようとします。 E.あなたの端末に応じて、これは期待通りに動作します:

print decoded 
+0

Python3では、btwは物事が異なります。ファイルを開くときに、ファイルのエンコーディングを与える必要があります。それから読み込むと、すでにUnicode文字列(Python3では 'str'と呼ばれます)が返されます。 – Alfe

+0

ありがとう、その仕事はよく! –

+0

ようこそStackOverflowへ! 「ありがとう」コメントは必要ありません。代わりに、答えが役に立つ場合は、それをアップボートしてください(答えの左にある数字の上にある上三角)。答えがあなたの問題を完全に解決した場合(そしていくつかの答えが最良の場合)、それに左のチェックマークを押してそれを受け入れる必要があります。この方法で他の人がすぐに解決策を見つけることができます。 – Alfe

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) 
+0

はい、ありがとうございます –

関連する問題