拆分以逗号分隔的字符串

时间:2014-09-28 18:57:36

标签: python regex string

我有以下字符串,我想要的是拆分它以获得一组键:值对

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')

鉴于上面的字符串,我想得到一个包含以下元素的数组 -

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等的混合,因为文本可能属于不同的语言。

1 个答案:

答案 0 :(得分: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]']