python正则表达式:如何从字符串中删除十六进制dec字符

时间:2016-02-25 09:39:26

标签: python regex

text="\xe2\x80\x94"
print re.sub(r'(\\(?<=\\)x[a-z0-9]{2})+',"replacement_text",text)

输出为

在这种情况下如何处理十六进制十进制字符?

2 个答案:

答案 0 :(得分:2)

您的输入没有反斜杠。它有3个字节,U+2014 EM DASH字符的UTF-8编码:

unicode

您需要直接匹配这些UTF-8字节,或者从UTF-8解码到repr()并匹配代码点。后者是优选的;总是尝试将文本作为Unicode处理,以简化您一次要转换的字符数。

另请注意,Python的\xhh输出(在交互式解释器中回显或打印列表,dicts或其他容器时使用时)使用re.sub(r'[\x80-\xff]+', "replacement_text", text) 转义序列来表示任何不可打印的字符。对于UTF-8字符串,包括ASCII范围之外的任何字符串。你可以用以下方法替换该范围之外的任何东西:

id

考虑到这个'匹配连续多个 UTF-8编码的字符,并将它们作为一组替换!

答案 1 :(得分:0)

您的输入是十六进制,而不是实际的“\ xe2 \ x80 \ x94”。 \ x只是表示以下字符应以十六进制解释的方式。

this post解释了这一点。