Python regex£to-char

时间:2015-08-11 08:51:20

标签: python regex python-3.x

我正在编写一个搜索文件的程序,寻找符号:

 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,如果它有帮助。

完整档案阅读http://pastebin.com/L7hjeg6A

1 个答案:

答案 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(),如上所述。

来自documentation of open() -

  

encoding 是用于解码或编码文件的编码名称。这应该只在文本模式下使用。默认编码取决于平台(无论locale.getpreferredencoding()返回什么),但可以使用Python支持的任何文本编码。请参阅编解码器模块以获取支持的编码列表。