以下のようなjsonをreadした文字列(str)データがあります。
...電話 で 話 を し て いる", "id": 291776, "caption": "黒い髪の女性が、携帯電話で話をしている"}, {"image_id": 335824, "tokenized_caption": "4 人 の 男性 が 、 スキー で 滑っ て いる", "id": 291781, "caption": "4人の男性が、スキーで滑っている"}, {"image_id": 16169, "tokenized_caption": "トレンチコート を 着 た 男性 が 凧 を 抱え て いる", "id": 291782, "caption": "トレンチコートを着た男性が凧を抱えている"}, {"image_id": 297919, "tokenized_caption": "青 の 水着 を 着 た 男性 が セイ リング を し て いる", "id": 291783, "caption": "青の水着を着た男性がセイリングをしている"}, {"image_id": 149117, "tokenized_caption": "像 が ピンク色 の おもちゃ で 遊ん で いる", "id": 291788, "caption":...
このうち、captionと名のついたデータの中身だけ取り出したいです。
例:
"caption": "黒い髪の女性が、携帯電話で話をしている"のうちの「黒い髪の女性が、携帯電話で話をしている」の部分
期待する出力例
["黒い髪の女性が、携帯電話で話をしている", "4人の男性が、スキーで滑っている","トレンチコートを着た男性が凧を抱えている"...]
実行したコード
#以下3つとも、resの結果がNoneになる pattern = r'(?<=\"caption\": \").*?(?=<\")' # pattern = r'(?<=\"caption\": \")[^\"]*(?=<\")' # pattern = r'(\"caption\": \")[^\"]*(\")' res = re.match(pattern, txt) print(res.groups())
実行環境
colab上で実行しています。
回答2件
あなたの回答
tips
プレビュー