Hier ist meine Zeichenfolge,Wie finde ich findall oder suche nach Daten in 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}]'
I findall-Suche verwenden möchten alle Daten unter „name“ zu extrahieren und „url“ von str. Hier ist, was ich getan habe,
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
Aber leider tut dies nicht, was ich will. Ist irgendwas falsch? Danke für Ihre Eingaben.
(1) Sie sollten zeigen, was der Code zurückgibt. (2) Lesen Sie über gierige/nicht-gierige Regex-Qualifier. –
Woher kommt diese Saite? Sieht aus wie JSON (außer das Öffnen und Schließen '{}' scheint zu fehlen). Wenn dies der Fall ist, verwenden Sie das Modul 'json' anstelle von Regexes, um es zu analysieren. – mkrieger1
Wenn Sie nicht-gierige Regex-Qualifier verwenden, werden nur der Vorname und die URL, also "John" und "/ mb9 /", zurückgegeben. Und wenn gierige Regex-Qualifizierer verwendet werden, wird die gesamte Zeichenfolge zurückgegeben. –