我有以下字符串,我想要的是拆分它以获得一组键:值对
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等的混合,因为文本可能属于不同的语言。
答案 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]']