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模块,可以使用一种编码读取文件并将其转换为 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++ 保存在 Windows-1251 中):

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

这是cp866通过chcp 866命令配置的控制台窗口的输出,因为它不是我的默认设置:

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

Note, though, that the two encodings do not support the same characters. The following characters are in Windows-1252, but not in cp866, and will cause Unicode encoding errors if printed to the console in cp866.

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

代码必须是 print(line)

不打印线..

听起来很傻,但它是如何工作的哈哈

于 2013-11-13T06:59:58.843 回答