文字だけでなくドイツ語も含むファイルを読みたいです。私はこのようにすることができることを発見しました
>>> import codecs
>>> file = codecs.open('file.txt','r', encoding='UTF-8')
>>> lines= file.readlines()
これは、Python IDLE でジョブを実行しようとすると機能しますが、別の場所から実行しようとすると正しい結果が得られません。アイデアはありますか?
テキストがどの文字エンコーディングでエンコードされているかを知る必要があります。事前にわからない場合は、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()
ファイルは正しく読み取られていると思いますが、出力時に間違ったエンコーディングを使用しています。これは、IDLE で適切な結果が得られるという事実に基づいています。
使用することをお勧めしますが、Python 3 がオブジェクトを適切print(line.encode('utf-8'))
に出力するかどうかはわかりません。bytes