Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从windows中的文件打印俄文文本_Python_String_Character Encoding - Fatal编程技术网

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

使用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

我有文件每行1个字,记事本++显示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()
导入系统 打印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€®©«µ¶±‰‹»›ѕ¦ѓђќџљјћњ™і¬