python - 使用嵌套分隔符号拆分 Python 字符串

标签 python regex string

我需要来自字符串

i = "1,'Test','items (one, two, etc.)',1,'long, list'"

提取下一个字符串的数组:

['1', "'Test'", "'items (one, two, etc.)'", '1', "'long, list'"]

在正则表达式的帮助下

r=re.split(r',+(?=[^()]*(?:\(|$))', i)

我只收到下一个结果:

['1', "'Test'", "'items (one, two, etc.)'", '1', "'long", " list'"]

UPD1

NULL应该被支持

i = "1,'Test',NULL,'items (one, two, etc.)',1,'long, list'"
['1', "'Test'", 'NULL', "'items (one, two, etc.)'", '1', "'long, list'"]

最佳答案

在这种情况下您不需要re.split。您可以在列表理解中使用re.findall:

>>> [k for j in re.findall(r"(\d)|'([^']*)'",i) for k in j if k]
['1', 'Test', 'items (one, two, etc.)', '1', 'long, list']

前面的正则表达式将匹配一个引号 '([^']*)' 或任何数字 (\d) 之间的任何内容。

或者在这种情况下,作为更有效的方法,您可以使用 ast.literal_eval :

>>> from ast import literal_eval
>>> literal_eval(i)
(1, 'Test', 'items (one, two, etc.)', 1, 'long, list')

关于python - 使用嵌套分隔符号拆分 Python 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807644/

相关文章:

python - Python 中 Numpy 和 MpMath 之间的互操作性

javascript - 需要 Javascript URL 正则表达式

php - preg_match 获取包含 123 和 .txt 之间任何字符的文件?

python - 有关动态规划的更多信息

Python:如何替换 int 数组中的所有相同元素?

python - Mongodb,聚合,如何抑制_id,但保留里面的内容?

mysql - MySQL 忽略包含连字符的行

python ConfigParser : read configuration from string

c - 替换C中字符串的元素

C编程局部字符指针