0

我有一份西班牙语文档,我想使用 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')
4

1 回答 1

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()

如此创建的文件将包含您列表的腌制版本。如果您宁愿拥有一个人类可读的文件,那么您可能只想使用一个普通文件。
处理不同编码的一个好方法是使用该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))
于 2012-05-10T18:53:37.143 回答