finallやfinditerは標準付属の正規表現ライブラリにくっついている関数です。
- 何やらゴチャゴチャした文字列がある
- その中でほしいのは一部
- 結果は文字列型にしたい
というような要件で役に立ちます。
実際のところ
findall
最も雑な方法はfindallで指定して、joinでくっつけてしまう方法。
以下の例ではbyteArray型の変数baに対し、ptrnに一致する条件を抽出し","でくっつけています。
ptn = b"" b",".join(re.findall(ptrn,ba))
finditer
前後を加工する場合はfinditerとformatのあわせ技が良いでしょう。
結果はgroupに格納されます。
ptn = re.compile(b':([1-9A-F]{2})([1-9A-F]{2})[1-9A-F]+\n') str = “” for i in re.finditer(ptn,data): str += "{:04X}{:04X}{:04X}".format(int(i.group(1),16),int(i.group(2),16),0x01)