python - 在尊重括号的同时用逗号拆分列表中的字符串

标签 python string list split

我有一个列表,例如

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/

相关文章:

c# - 如何在 C# 控制台应用程序中打印双引号 (")

python - 删除列表中连续整数的最快且更有效的方法是什么?

python - 如何在 Python 中选择嵌套列表中的列表项

python - 在同一台机器上运行 Python 3.2 和 2.7

python - 以时间间隔对数据库进行调度过滤

python - 为 PyTorch 使用大数据集的最有效方法?

python - 按所有记录相同过滤分组的 Pandas 数据框

C++函数返回字符串

java - 格式化 String.format 数据

c# - 如何更改通用特定类