我正在处理一个html文本文件,并按如下方式搜索十六进制数字:
example \xb7\xc7\xa0....
我尝试使用此代码
t=re.findall (r'\\x[0-9a-fA-F]+', line)
但我只能获得空名单。
请告诉正确的编写代码的方式。
答案 0 :(得分:2)
如果反斜杠在正则表达式中转义,则代码可以正常工作:
t = re.findall (r'\\x[0-9a-fA-F]+', line)
结果:
['\\xb7', '\\xc7', '\\xa0']
ideone:http://ideone.com/MPO5j
如果它不起作用,可能是因为你的字符串包含文字二进制字符。然后尝试这样的事情:
t = re.findall (r'[\x80-\xff]', line)
ideone:http://ideone.com/ChIsh
答案 1 :(得分:2)
对我来说很好。有两种情况可以解释您的问题:
您通过将字符串分配给变量line
来测试这一点,如下所示:
line = 'example \xb7\xc7\xa0....'
在这种情况下,您需要转义反斜杠:
line = 'example \\xb7\\xc7\\xa0....'
\xb7
实际上是代码为B7十六进制的字符,而不是字符序列{{1 }}。答案 2 :(得分:0)
您的代码适用于我:
>>> line = r'\xb7\xc7\xa0....'
>>> t=re.findall (r'\\x[0-9a-fA-F]+', line)
>>> t
['\\xb7', '\\xc7', '\\xa0']