使用python从windows中的文件打印俄语文本

时间:2013-11-13 06:47:15

标签: python string character-encoding

我有每行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()

但它打印错误的单词。

2 个答案:

答案 0 :(得分:2)

我假设Windows。

俄语Windows上的

ANSIWindows-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配置的控制台窗口的输出,因为它不是我的默认值:

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

但请注意,这两种编码不支持相同的字符。以下字符在Windows-1252中,但不在cp866中,如果在cp866中打印到控制台,将导致Unicode编码错误。

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

答案 1 :(得分:-1)

代码必须是打印(行)

不打印线..

听起来很傻但它的工作原理哈哈