Python正则表达式:在字符串中检测“\ x0”?

时间:2018-01-10 06:22:31

标签: python regex

a = '수치 몇까지 \x01\x01참문 여시나요?'

这是我在某个网页中抓取的string。 我想要做的是用空格替换\x0

我尝试了什么:

re.sub(r'\\x\d+', '', a)

但它不起作用。

需要你的帮助。感谢

修改

由于还有其他代码,例如\ x02,\ x08,我想使用regex而不是字符串replace

2 个答案:

答案 0 :(得分:2)

字符串'\x01'是单个字符,其表示为ctrl-A,ASCII SOH或Unicode U+0001 1 。在Python字符串中,此字符由表示序列\xHH,其中HH是两位十六进制字符代码。同样地,'\x41'只是表示包含单个字符whose character code is 65 (hex 0x41)的字符串'A'的另一种方式。

如果要替换十六进制转义表示以零开头的字符,那就是正则表达式字符范围[\x00-\x0f](尽管这个特定范围看起来很随意 - 如果你实际上尝试删除不可打印的字符,或控制字符或其他一些明确定义的组,您需要专门询问关于该特定范围,或者更确切地说只是google它。)

你真的不需要正则表达式,但是:

string = ''.join([x if ord(x) > 15 else ' ' for x in string])

1 Unicode当然严格来说是ASCII的超集。在Python 3中,无论如何所有字符串都是Unicode字符串。

答案 1 :(得分:1)

需要替换的角色是\x01。所以这样做:

代码:

a.replace('\x01', '')

测试代码:

a = '수치 몇까지 \x01\x01참문 여시나요?'

print(a)
print(a.replace('\x01', ''))

结果:

수치 몇까지 참문 여시나요?
수치 몇까지 참문 여시나요?