我有一个列表,例如
a = ['john(is,great),paul,school', 'robert,jack,john']
然后我正在构建一个空列表来附加拆分
b = []
然后我这样做
for i in a:
b.append(i.split(','))
但是 list be 是这样出现的
[['john(is', 'great)', 'paul', 'school'], ['robert', 'jack', 'john']]
这样做是因为它在逗号处拆分,但是否有另一种拆分方式,以便输出为
['john(is,great)', 'paul', 'school', 'robert', 'jack', 'john']
最佳答案
您可以使用 list.extend()
单独添加元素:
for i in a:
b.extend(i.split(','))
要在逗号上拆分文本而不是在括号内,您可以使用以下正则表达式:
re.split(r',(?=[^()]*(?:\(|$))', i)
只有在逗号后面没有包含任何括号(左括号或右括号)的文本直到下一个左括号时,才会按逗号拆分。当您有嵌套括号时,此表达式会下降,但适用于您的简单情况:
>>> import re
>>> i = 'john(is,great),paul,school'
>>> re.split(r',+(?=[^()]*(?:\(|$))', i)
['john(is,great)', 'paul', 'school']
对于更复杂的拆分,请使用成熟的解析器。
关于python - 在尊重括号的同时用逗号拆分列表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219400/