2014-09-28 285 views
0

我有下面的字符串,我想有分裂它來獲得關鍵的數組:值對拆分逗號分隔字符串

color:'White', color:('White' or 'Black'),color:'YELLOW,BLACK', price: [11,12], price:{13, 14}, price:[11,13 },price:{ 11,13], color:('White' and 'Black') 

鑑於上面的字符串,我想獲得一個array with following elements -

color:'White' 
color:('White' or 'Black') 
color:'YELLOW,BLACK' 
price:[11,12] 
price:{13, 14} 
price:[11,13 } 
price:{ 11,13] 
color:('White' and 'Black') 

我可以通過解析字符串逐個字符並適當地形成組來完成上述操作。我嘗試了一些正則表達式,但是,它們都似乎失敗了。

我想在Python中實現這一點,不知道這是否會影響。這是我試過 -

re.split(r'(, *(?=.*:))', "color:'White',color:('White' or 'Black'),color:'DEF,GHI',price:[11,12], price:{13,14}, price:[11,13},price:{11,13]") 

單引號之間的字符可以是任何東西,字母,數字,Unicode的混合物等文本可能涉及到不同的語言。

+3

你提到有嘗試過的東西;你爲什麼不向我們展示? – Veedrac 2014-09-28 18:59:27

+0

'.split(',')'有什麼問題? – CoryKramer 2014-09-28 19:01:06

+0

我想讓逗號保留在價格:{11,13}'或'顏色:'黃色,黑色'。 – devang 2014-09-28 19:02:38

回答

1

這應該做到這一點:

re.split(', *(?=[^,]+?:)',string) 

含義上僅當後面的零或更多的空間,並用一個冒號終止字符(不包括逗號和冒號)的序列逗號分割。

隨着你的字符串,它賦予:

["color:'White'", 
"color:('White' or 'Black')", 
"color:'YELLOW,BLACK'", 
'price: [11,12]', 
'price:{13, 14}', 
'price:[11,13 }', 
'price:{ 11,13]'] 
+0

它不限於字母字符。單引號中的文字可以是任何東西,字母數字等 – devang 2014-09-28 19:13:06

+0

更改accordinly,使用非貪婪的比賽來代替。 – isedev 2014-09-28 19:13:47

+0

拆分是否真的保留這樣的逗號?現在的答案是 – 2014-09-28 19:14:43