正则表达式,在python中使用搜索

时间:2014-09-15 13:05:55

标签: python regex

我想在python中解码一些十六进制。

部分字符串\xcd\xed\xb0\xb2

    text = re.search(r'(\\x\w{2}){4}', rtf)

    unicodeText = text.decode('gb2312')

错误:'_ sre.SRE_Match'对象没有属性'decode'

希望有人可以提供帮助,谢谢

1 个答案:

答案 0 :(得分:1)

re.search会返回Match object,而不是匹配的字符串。

使用group方法获取匹配的字符串。

>>> rtf = r'\xcd\xed\xb0\xb2'
>>> matched = re.search(r'(\\x\w{2}){4}', rtf)
>>> text = matched.group()
>>> text.decode('string-escape').decode('gb2312')
u'\u665a\u5b89'

# In Python 3.x
# >>> text.encode().decode('unicode-escape').encode('latin1').decode('gb2312')
# '晚安'

顺便说一下,你不需要使用正则表达式,你想要的是转换\xOO

Python 2.x:

>>> rtf = r'\xcd\xed\xb0\xb2'
>>> rtf.decode('string-escape').decode('gb2312')
u'\u665a\u5b89'
>>> print rtf.decode('string-escape').decode('gb2312')
晚安

Python 3.x:

>>> rtf = r'\xcd\xed\xb0\xb2'
>>> rtf.encode().decode('unicode-escape').encode('latin1').decode('gb2312')
'晚安'