1

私は各行に1ワードのファイルを持っています.notepad ++はANSIエンコーディングを示しています.

ファイルは次のようになります (ロシア語のテキスト):

вымышлять

тем|тема|то|тот

не

мало|менее|меней

次のような出力:

ЇхфюЁ|ЇхфюЁр
ьшїрщыютшў
фюёЄюхтёъшщ
чряшёър
шч
яюфяюы№х
яєсышўэ√щ
¤ыхъЄЁюээ√щ
сшсышюЄхър

私のコード:

import sys
print sys.stdout.encoding  #prints cp866

ins = open( "out.txt", "r" )
words = []
s=0
for line in ins:
    if (s<10):
        print line 
            s=s+1
    words.append( line )
ins.close()

しかし、間違った言葉を出力します。

4

2 に答える 2

2

私はWindowsを想定しています。

ANSIロシア語の Windows では ですWindows-1251が、cmd.exeコンソール ウィンドウは を使用しているようcp866です。モジュールを使用するcodecsと、ファイルを読み込んで 1 つのエンコーディングを使用して Unicode に変換できます。その後、コンソールのエンコーディングを使用して印刷できます。

import codecs

with codecs.open('out.txt',encoding='cp1251') as ins:
    words = []
    s=0
    for line in ins:
        if (s<10):
            print line, 
            s=s+1
        words.append(line)

入力ファイル (Notepad++ 経由で Wi​​ndows-1251 に保存):

федор|федора
михайлович
достоевский
записка
из
подполье
публичный
электронный
библиотека

これは私のデフォルトではないため、コマンドをcp866介して構成されたコンソール ウィンドウへの出力です。chcp 866

федор|федора
михайлович
достоевский
записка
из
подполье
публичный
электронный
библиотека

ただし、2 つのエンコーディングは同じ文字をサポートしていないことに注意してください。次の文字は Windows-1252 にありますが、cp866 にはありません。cp866 でコンソールに出力すると、Unicode エンコーディング エラーが発生します。

ЅІЃЂЌЏЉЈЋЊ—ґҐ–”“„’‘‚§…‡†•\xad€®©«µ¶±‰‹»›ѕ¦ѓђќџљјћњ™і¬
于 2013-11-13T07:20:01.093 に答える
-1

コードは print(line) でなければなりません

行を印刷しない..

ばかげているように聞こえますが、それがどのように機能するのか笑

于 2013-11-13T06:59:58.843 に答える