我有每行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()
但它打印错误的单词。
答案 0 :(得分:2)
我假设Windows。
俄语Windows上的 ANSI
为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
配置的控制台窗口的输出,因为它不是我的默认值:
федор|федора
михайлович
достоевский
записка
из
подполье
публичный
электронный
библиотека
但请注意,这两种编码不支持相同的字符。以下字符在Windows-1252中,但不在cp866中,如果在cp866中打印到控制台,将导致Unicode编码错误。
ЅІЃЂЌЏЉЈЋЊ—ґҐ–”“„’‘‚§…‡†•\xad€®©«µ¶±‰‹»›ѕ¦ѓђќџљјћњ™і¬
答案 1 :(得分:-1)
代码必须是打印(行)
不打印线..
听起来很傻但它的工作原理哈哈