バイナリファイルで正規表現を使用してPython 2.7で文字列置換を行う方法を探しています。
s は、バイナリ ファイルを読み取って取得した文字列です。次のシーケンス (hex ) が含まれます。
' 00 00 03 00 00 01 4A 50 20 43 52 55 4E 43 48 20 32 20 45 51 00 F7 00 F0 '
sub への文字列を見つけるために使用する変数は次のとおりです。
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)
今、エラーはありませんが、サブは文字列を変更していないようです。何か不足していますか?
>>> 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 に変更したいと思います。