我正在编写一个搜索文件的程序,寻找符号:
r = re.compile(r"£\S*£")
def parseData(self):
f = open(file, 'r')
fs = f.read()
res = r.findall(fs)
return res
出于某种原因,我的输出有符号,比如£foo,其中文件是£foo£。
我正在使用python 3.4.3,如果它有帮助。
答案 0 :(得分:3)
问题是文件以一种格式编码,但您以不同的格式打开文件。最有可能的是,文件是utf-8
,但是你以某种ANSI格式打开(我在notepad ++中看到类似的问题,当我将编码从UTF-8更改为ANSI时,£Latitude£
)。显示相同行为的示例 -
我的a.txt
-
£Latitude£
代码 -
>>> f = open('a.txt','r')
>>> s = f.read()
>>> s
'\xc2£Latitude\xc2£'
>>> f = open('a.txt','r',encoding='utf-8')
>>> s = f.read()
>>> s
'£Latitude£'
您需要以正确的编码方式打开文件,方法是将编码作为参数传递给open()
,如上所述。
encoding 是用于解码或编码文件的编码名称。这应该只在文本模式下使用。默认编码取决于平台(无论locale.getpreferredencoding()返回什么),但可以使用Python支持的任何文本编码。请参阅编解码器模块以获取支持的编码列表。