【发布时间】:2012-07-17 07:48:54
【问题描述】:
我正在寻找一种在 python 2.7 中使用正则表达式对二进制文件进行字符串替换的方法。
s 是我从读取二进制文件中得到的字符串。它包含这个序列(十六进制):
'00 00 03 00 00 01 4A 50 20 43 52 55 4E 43 48 20 32 20 45 51 00 F7 00 F0'
这里是我用来查找子字符串的变量:
f01 = re.findall( br'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', s)
这是我的潜艇:
f99 = re.sub( br'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', br'\x03\x00\x00\x01\x4B\x4B\x4B\x4B\xF7\x00\xF0', s)
现在,虽然我没有错误,但我的 sub 似乎没有改变我的字符串。我错过了什么吗?
>>> f01 = re.findall( br'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', s)
>>> print f01[0]
JP CRUNCH 2 EQ
>>> f99 = re.sub( br'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', br'\x03\x00\x00\x01\x4B\x4B\x4B\x4B\xF7\x00\xF0', s)
>>> print f99
MThd
>>> print f99[0]
M
>>> print f01[0]
JP CRUNCH 2 EQ
>>> f01 = re.findall( br'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', s)
>>> print f01[0]
JP CRUNCH 2 EQ
我想将我的初始字符串更改为 \x03\x00\x00\x01\x4B\x4B\x4B\x4B\xF7\x00\xF0 以便将其存储到文件中。
【问题讨论】:
-
谢谢,我试过了,但还是一样的 IMO:
-
>>> f99 = re.sub( b'\x03\x00\x00\x01(.*?)\xF7\x00\xF0', b'\x03\x00\x00\x01 \x4B\x4B\x4B\x4B\xF7\x00\xF0', s) >>> 打印 f99[0] M >>> f01 = re.findall( br'\x03\x00\x00\x01(.*? )\xF7\x00\xF0', s) >>> 打印 f01[0] JP CRUNCH 2 EQ