15

文字だけでなくドイツ語も含むファイルを読みたいです。私はこのようにすることができることを発見しました

  >>> import codecs
  >>> file = codecs.open('file.txt','r', encoding='UTF-8')
  >>> lines= file.readlines()

これは、Python IDLE でジョブを実行しようとすると機能しますが、別の場所から実行しようとすると正しい結果が得られません。アイデアはありますか?

4

2 に答える 2

23

テキストがどの文字エンコーディングでエンコードされているかを知る必要があります。事前にわからない場合は、chardetモジュールで推測してみてください。最初にインストールします:

$ pip install chardet

次に、たとえば、ファイルをバイナリモードで読み取ります。

>>> import chardet
>>> chardet.detect(open("file.txt", "rb").read())
{'confidence': 0.9690625, 'encoding': 'utf-8'}

それで:

>>> import codecs
>>> import unicodedata
>>> lines = codecs.open('file.txt', 'r', encoding='utf-8').readlines()
于 2012-06-18T16:33:32.360 に答える
0

ファイルは正しく読み取られていると思いますが、出力時に間違ったエンコーディングを使用しています。これは、IDLE で適切な結果が得られるという事実に基づいています。

使用することをお勧めしますが、Python 3 がオブジェクトを適切print(line.encode('utf-8'))に出力するかどうかはわかりません。bytes

于 2012-06-18T17:28:09.003 に答える