a = '수치 몇까지 \x01\x01참문 여시나요?'
这是我在某个网页中抓取的string
。
我想要做的是用空格替换\x0
。
我尝试了什么:
re.sub(r'\\x\d+', '', a)
但它不起作用。
需要你的帮助。感谢
修改
由于还有其他代码,例如\ x02,\ x08,我想使用regex
而不是字符串replace
。
答案 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', ''))
수치 몇까지 참문 여시나요?
수치 몇까지 참문 여시나요?