打印列表时python中的Unicode错误

打印列表时python中的Unicode错误,python,unicode,Python,Unicode,编辑:-文件 我有一个utf8编码的文本文件,里面有一些西里尔文字。要加载它,我使用以下代码: import codecs fopen = codecs.open('thefile', 'r', encoding='utf8') fread = fopen.read() fread将文件转储到屏幕上的所有文件(转义序列)打印fread以可读的形式(我猜是ASCII)显示它 然后,我尝试拆分它并将其写入一个没有编码的空文件: a = fread.split() for l in a:

编辑:-文件

我有一个utf8编码的文本文件,里面有一些西里尔文字。要加载它,我使用以下代码:

import codecs
fopen = codecs.open('thefile', 'r', encoding='utf8')
fread = fopen.read()
fread
将文件转储到屏幕上的所有文件(转义序列)<代码>打印fread以可读的形式(我猜是ASCII)显示它

然后,我尝试拆分它并将其写入一个没有编码的空文件:

a = fread.split()
for l in a: 
    print>>dasFile, l
但我收到以下错误消息:
UnicodeEncodeError:“ascii”编解码器无法对位置0-13的字符进行编码:序号不在范围(128)


是否有方法将
fread.split()
转储到文件中?如何消除此错误?

由于您已经通过
codecs.open()
打开并读取了该文件,因此该文件已被解码为Unicode。所以要输出它,你需要再次编码,大概是回到UTF-8

for l in a:
    dasFile.write(l.encode('utf-8'))

由于您已通过
codecs.open()
打开并读取该文件,因此该文件已被解码为Unicode。所以要输出它,你需要再次编码,大概是回到UTF-8

for l in a:
    dasFile.write(l.encode('utf-8'))

打印将使用默认编码,通常为“ascii”。所以你看到打印错误了。但您可以打开一个文件并直接写入

a = fopen.readlines() # returns a list of lines already, with line endings intact
# do something with a
dasFile.writelines(a) # doesn't add line endings, expects them to be present already.
假设a中的行已经编码


另外,您还应该研究
io
模块。

打印将使用默认编码,通常为“ascii”。所以你看到打印错误了。但您可以打开一个文件并直接写入

a = fopen.readlines() # returns a list of lines already, with line endings intact
# do something with a
dasFile.writelines(a) # doesn't add line endings, expects them to be present already.
假设a中的行已经编码


另外,您还应该研究
io
模块。

您可以发布文本样本吗?您可以发布文本样本吗?@abruski哦,是的,您拆分了它。我忘了。我来编辑答案。@abruski哦,是的,你把它拆分了。我忘了。我将编辑答案。@abruski:确保
.close()
文件以确保从缓冲区刷新任何更改。@abruski:确保
.close()
文件以确保从缓冲区刷新任何更改。