was*_*256 9 python regex python-3.x
我正在尝试对字节变量执行正则表达式替换,但收到错误
sequence item 0: expected a bytes-like object, str found
Run Code Online (Sandbox Code Playgroud)
这是一个用python3重现问题的小代码示例:
import re
try:
test = b'\x1babc\x07123'
test = re.sub(b"\x1b.*\x07", '', test)
print(test)
except Exception as e:
print(e)
Run Code Online (Sandbox Code Playgroud)
Jim*_*ard 13
当作用于 bytes 对象时,所有参数都必须是 type byte,包括替换字符串。那是:
test = re.sub(b"\x1b.*\x07", b'', test)
Run Code Online (Sandbox Code Playgroud)
您的替换值bytes也必须是一个对象:
re.sub(b"\x1b.*\x07", b'', test)
# ^^^
Run Code Online (Sandbox Code Playgroud)
您无法用str对象替换匹配的字节,即使这是一个空字符串对象。
演示:
>>> import re
>>> test = b'\x1babc\x07123'
>>> re.sub(b"\x1b.*\x07", b'', test)
b'123'
Run Code Online (Sandbox Code Playgroud)