Python:输出中拉丁字符的问题

时间:2012-05-10 18:42:10

标签: python diacritics

我有一份西班牙语文档,我想用Python格式化。问题是在输出文件中,重音字符混乱,以这种方式:\ xc3 \ xad。 我在一段时间做了一些类似的编辑时成功地保留了正确的角色,虽然我已经尝试了我所做的一切以及更多,但这次它不会起作用。 这是代码的当前版本:

# -*- coding: utf-8 -*- 

import re
import pickle

inputfile = open("input.txt").read()

pat = re.compile(r"(@.*\*)")

mylist = pat.findall(inputfile)

outputfile = open("output.txt", "w")

pickle.dump(mylist, outputfile)

outputfile.close()

我在Windows 7上使用Python 2.7。 谁能看到任何明显的问题?输入文件以utf-8编码,但我也尝试将其编码为latin-1。感谢。

澄清一下:我的问题是拉丁字符在输出中没有正确显示。 它现在已经解决了,我只需按照mata的建议添加这一行:

inputfile = inputfile.decode('utf-8')

1 个答案:

答案 0 :(得分:2)

输入文件是以utf-8编码的,然后你应该decode首先使用它:

import re
import pickle

inputfile = open("input.txt").read()
inputfile = inputfile.decode('utf-8')

pat = re.compile(r"(@.*\*)")

mylist = pat.findall(inputfile)

outputfile = open("output.txt", "w")

pickle.dump(mylist, outputfile)

outputfile.close()

这样创建的文件将包含列表的pickle版本。你宁愿hava一个人类可读的文件,那么你可能只想使用一个普通的文件 处理不同编码的一种好方法是使用codecs模块:

import re
import codecs

with codecs.open("input.txt", "r", "utf-8") as infile:
    inp = infile.read()

pat = re.compile(r"(@.*\*)")
mylist = pat.findall(inp)

with codecs.open("output.txt", "w", "utf-8") as outfile:
     outfile.write("\n".join(mylist))