修改:http://pastebin.com/W4iG3tjS - 文件
我有一个用utf8编码的文本文件,里面有一些西里尔文本。要加载它,我使用以下代码:
import codecs
fopen = codecs.open('thefile', 'r', encoding='utf8')
fread = fopen.read()
fread
将文件转储到屏幕上所有unicodish(转义序列)。 print fread
以可读的形式显示它(我猜是ASCII)。
然后我尝试将其拆分并将其写入没有编码的空文件:
a = fread.split()
for l in a:
print>>dasFile, l
但是我收到以下错误消息:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13: ordinal not in range(128)
有没有办法将fread.split()
转储到文件中?我怎样才能摆脱这个错误?
答案 0 :(得分:4)
由于您已通过codecs.open()
打开并读取文件,因此已将其解码为Unicode。所以要输出它,你需要再次编码,大概回到UTF-8。
for l in a:
dasFile.write(l.encode('utf-8'))
答案 1 :(得分:0)
print将使用默认编码,通常是" 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中的行已经编码。
PS。您还应该调查io
模块。