2014-08-29 27 views
0

這裏是我的代碼(道歉的testString的冗長,我也不太清楚如何格式化):Python正則表達式打印字符串的出部份

testString = """{"id":"174833828503074873","classid":"217769142","instanceid":"0","amount":"1","pos":1},"174833828503117736":{"id":"174833828503117736","classid":"217769142","instanceid":"574274862","amount":"1","pos":2}asdf234sadf""" 
sections = re.findall(r'{.*}', testString) 
for section in sections: 
    print section 

我想提取以下兩個絃樂器出來: {"id":"174833828503074873","classid":"217769142","instanceid":"0","amount":"1","pos":1} {"id":"174833828503117736","classid":"217769142","instanceid":"574274862","amount":"1","pos":2}

然而,當我打印的部分,提取第一和第二項並將它們組合成一個字符串:

{"id":"174833828503074873","classid":"217769142","instanceid":"0","amount":"1","pos":1},"174833828503117736":{"id":"174833828503117736","classid":"217769142","instanceid":"574274862","amount":"1","pos":2} 

有人知道我在做什麼錯嗎?

+0

爲什麼你需要的正則表達式是什麼? – Shahar 2014-08-29 02:08:13

+0

數據來自哪裏? – alecxe 2014-08-29 02:08:25

回答

2

您需要在*之後添加?量詞來做一個不情願的匹配(最短匹配)。基本上*只會做一個貪婪的匹配。

sections = re.findall(r'{.*?}', testString) 

DEMO

>>> import re 
>>> testString = """{"id":"174833828503074873","classid":"217769142","instanceid":"0","amount":"1","pos":1},"174833828503117736":{"id":"174833828503117736","classid":"217769142","instanceid":"574274862","amount":"1","pos":2}asdf234sadf""" 
>>> sections = re.findall(r'{.*?}', testString) 
>>> for section in sections: 
...  print section 
... 
{"id":"174833828503074873","classid":"217769142","instanceid":"0","amount":"1","pos":1} 
{"id":"174833828503117736","classid":"217769142","instanceid":"574274862","amount":"1","pos":2} 
+0

甜蜜的演示,我可以看到這個網站在未來如何派上用場:D – 2014-08-29 04:18:58