Pythonの正規表現ライブラリ"re"は機能が充実しています。
文字列の置き換えに使うsub関数とグループ参照を併用すると必要部分を抽出して並び替え……みたいな事は割りとスマートにいけます。
実際のところ
こんな例があったとします。*1
- データは次の形式でくる"%{16進数表記_い}!{16進数表記_ろ}!{16進数表記_は}%"という形式でくる
- 出力形式はJSON"{"data_a":{16進数_は}, "data_b":{16進数_い}}"
泥臭くやると、searchして変数に格納、format関数なりで整形……という手が感が付きます。
ここでsubとグループの参照を使ってやると、割りかしスッキリ書くことができます。
……もっといい方法がありそうですけどね。
query = b'%([0-9a-f]{2,})!([0-9a-f]{2,})!([0-9a-f]{2,})%\n' result = b'{"data_a":"0x\g<3>", "data_b":"0x\g<1>"}' rcvdPckt = b'%ac2!2ab4!f5%\n' re.sub(query, result, rcvdPckt) #>> b'{"data_a":"0xf5", "data_b":"0xac2"}'
*1:実際やった例は、こんな狂ったパケットでは無かったですが