使用正则表达式摆脱十六进制

时间:2017-02-14 03:17:11

标签: python regex hex

我试图从文本字符串中删除一些十六进制(例如\xc3)。 我计划使用正则表达式来帮助摆脱这些。 这是我的代码:

import re
tweet = 'b"[/Very seldom~ will someone enter your life] to question\xc3\xa2\xe2\x82\xac\xc2\xa6"'    
tweet1 = re.sub(r'\\x[a-f0-9]{2}', '', tweet)
print(tweet1)

但是,我没有删除输出,而是实际获得了hex的编码版本。这是我的输出:

b"[/Very seldom~ will someone enter your life] to questionââ¬Â¦ "

有人知道如何摆脱那些十六进制字符串吗?...提前谢谢。

4 个答案:

答案 0 :(得分:0)

应用正则表达式后尝试tweet1.decode('ascii','ignore')

答案 1 :(得分:0)

你可以简单地做

import re
tweet = 'b"[/Very seldom~ will someone enter your life] to question\xc3\xa2\xe2\x82\xac\xc2\xa6"'
tweet1 = re.sub(b'[\xc3\xa2\xe2\x82\xac\xc2\xa6]', '', tweet)

输出:

b"[/Very seldom~ will someone enter your life] to question"

答案 2 :(得分:0)

您可以尝试这样的事情:

b"[Very seldom~ will someone enter your life] to question"

输出:

[^\w\s{}]

正则表达式:

\w - 匹配不是\s{ user these in your use list System.Ioutils }或标点字符的所有内容。

答案 3 :(得分:0)

实际上,问题是我如何模拟问题。 tweet不包含文字字符\xc3\xa2...,它在声明字符串时实际编码它们。所以正则表达式正在寻找字符串\xc3,但tweet在该位置包含的内容实际上是Ã

解决方案是在utf8中编码然后转换为字符串,最后使用正则表达式来摆脱十六进制。我在这篇文章中取得了领先(看看Martijn Pieters的第一个答案):python regex: how to remove hex dec characters from string