使用python从windows中的文件打印俄文文本
我有文件每行1个字,记事本++显示ANSI编码 文件看起来像(俄语文本): 输出如下内容:使用python从windows中的文件打印俄文文本,python,string,character-encoding,Python,String,Character Encoding,我有文件每行1个字,记事本++显示ANSI编码 文件看起来像(俄语文本): 输出如下内容: ЇхфюЁ|ЇхфюЁр ьшїрщыютшў фюёЄюхтёъшщ чряшёър шч яюфяюы№х яєсышўэ√щ ¤ыхъЄЁюээ√щ сшсышюЄхър 我的代码: import sys print sys.stdout.encoding #prints cp866 ins = open( "out.txt", "r" ) words = [] s=0 for line in
ЇхфюЁ|ЇхфюЁр
ьшїрщыютшў
фюёЄюхтёъшщ
чряшёър
шч
яюфяюы№х
яєсышўэ√щ
¤ыхъЄЁюээ√щ
сшсышюЄхър
我的代码:
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()
导入系统
打印sys.stdout.encoding#打印cp866
ins=打开(“out.txt”、“r”)
单词=[]
s=0
对于行输入ins:
如果(s必须打印代码(行)
不是打印行
听起来很傻,但它是如何工作的哈哈我假设是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)
以下是通过chcp 866
命令为cp866
配置的my console窗口的输出,因为它不是我的默认值:
федор|федора
михайлович
достоевский
записка
из
подполье
публичный
электронный
библиотека
但请注意,这两种编码不支持相同的字符。以下字符在Windows-1252中,但在cp866中不支持,如果在cp866中打印到控制台,将导致Unicode编码错误
ЅІЃЂЌЏЉЈЋЊ—ґҐ–”“„’‘‚§…‡†•\xad€®©«µ¶±‰‹»›ѕ¦ѓђќџљјћњ™і¬
请添加一个示例,说明文件的外观和输出是什么?另外,您似乎没有增加s变量。什么是“错误的单词”?请添加示例。“错误的单词”表示错误的编码查找文件的编码(可能与
sys.stdout
的编码不同)然后使用编解码器。打开
以正确的编码打开它,而不是打开
。您好,这将帮助您:如果OP使用的是Python 2.X,则不会。
федор|федора
михайлович
достоевский
записка
из
подполье
публичный
электронный
библиотека
ЅІЃЂЌЏЉЈЋЊ—ґҐ–”“„’‘‚§…‡†•\xad€®©«µ¶±‰‹»›ѕ¦ѓђќџљјћњ™і¬