2017-01-11 13 views
0

私は磨き上げ語のリストを含むファイルを持っています。ファイルの作成はUTF-8 (with BOM), with CRLF line terminatorsです。Python - リスト内の単語の異なる表示、要素と異なる表示

print dictionary[104] -> abakusów 

しかし、私は配列スライスを印刷するとき、私は、文字列にデコードされたバイトをしませ得る:私は、単一の要素を印刷するとき、それは正しく印刷され、その後

dictionary = open('file.txt', 'r').readlines() 

:私はファイル全体を読み込みます次のように:

print dictionary[104:105] -> ['ABAKUS\xc3\x93W\tabakus\r\n'] 

(タブで区切られた単語の基本形式もありますが、ここでは重要ではありません)。なぜそれが(私は各単語の長さを取得しなければならないと私はそれが適切に行われるかわからない)と思います。

ありがとうございます。

+1

試し '印刷のrepr( "abakusów")'とあなたは同じ ' 'abakus \ XC3 \ xb3w'' list'は___ __repr'への再帰呼び出しを使用しています 'ので'印刷する – furas

+1

オブジェクトを取得を含む。それは何が印刷されるかだけの問題ですが、データは同じです。 –

+1

'print dictionary [104:105] [0]'を試してみるか、 'print '、' join(list) 'を使ってリスト要素を手動で一つの文字列に変換してから印刷してください。 – furas

答えて

3

printstr - パラメータの文字列表現 - を呼び出します。単一の文字列を印刷するだけでうまく動作します。 2番目のケースでは、strが文字列のリストのために呼び出されますが、リストのデータ型はstrを使用してそのサブ要素の文字列表現を構築しますが、reprは使用されません。このため、エンコードされていないというエスケープ文字になります。リストの単一要素を出力するには、索引付けやループを使用するか、リストの文字列表現をより良くするために独自の関数をプログラムする必要があります。たとえば、この:

def mystr(list): 
    return '[' + ', '.join(['"' + str(e) + '"' for e in list]) + ']' 
関連する問題