はここ findallやsearchを使ってpythonでデータを抽出するには?
str = 'A:[{type:"mb",id:9,name:"John",url:"/mb9/",cur:0,num:83498},
{type:"mb",id:92,name:"Mary",url:"/mb92/",cur:0,num:404},
{type:"mb",id:97,name:"Dan",url:"/mb97/",cur:0,num:139},
{type:"mb",id:268,name:"Jennifer",url:"/mb268/",cur:0,num:0},
{type:"mb",id:289,name:"Mike",url:"/mb289/",cur:0,num:0}],B:
[{type:"mb",id:157,name:"Sue",url:"/mb157/",cur:0,num:35200},
{type:"mb",id:3,name:"Rob",url:"/mb3/",cur:0,num:103047},
{type:"mb",id:2,name:"Tracy",url:"/mb2/",cur:0,num:87946},
{type:"mb",id:26,name:"Jenny",url:"/mb26/",cur:0,num:74870},
{type:"mb",id:5,name:"Florence",url:"/mb5/",cur:0,num:37261},
{type:"mb",id:127,name:"Peter",url:"/mb127/",cur:0,num:63711},
{type:"mb",id:15,name:"Grace",url:"/mb15/",cur:0,num:63243},
{type:"mb",id:82,name:"Tony",url:"/mb82/",cur:0,num:6471},
{type:"mb",id:236,name:"Lisa",url:"/mb236/",cur:0,num:4883}]'
私はfindAllの使用または「名前」とstrから「URL」の下にあるすべてのデータを抽出するために、検索したい、私の文字列です。ここで私は何をしたのですか?
pattern = re.comile(r'type:(.*),id:(.*),name:(.*),url:(.*),cur:(.*),num:
(.*)')
for (v1, v2, v3, v4, v5, v6) in re.findall(pattern, str):
print v3
print v4
残念ながら、これは私がしたいことをしません。どうかしましたか?あなたの入力をありがとう。
(1)コードが返すものを表示する必要があります。 (2)欲張り/非貪欲な正規表現の修飾子について読んでください。 –
この文字列はどこから来たのですか? JSONのように見えます( '{}'の開閉は例外です)。もしそうなら、regexesの代わりに 'json'モジュールを使って解析してください。 – mkrieger1
実際に貪欲でない正規表現修飾子を使用すると、最初の名前とurl、つまり 'John'と '/ mb9 /'だけが返されます。 greedy regex修飾子を使用すると、文字列全体が返されます。 –