Python:拆分包含括号和|的复杂字符串

Posted

技术标签:

【中文标题】Python:拆分包含括号和|的复杂字符串【英文标题】:Python: splitting a complex string including parentheses and | 【发布时间】:2013-03-30 13:50:39 【问题描述】:

在一个测试文件中,我有表格中的记录

DATA(VALUE1|VALUE2||VALUE4)

等等。

我想将此字符串分成两遍,第一遍产生“DATA”,第二遍给出括号内的内容,在“|”处分开。第二部分看起来微不足道,但到目前为止,我对第一部分的尝试很糟糕。

我更倾向于正则表达式而不是解析,因为最后行非常简单。

【问题讨论】:

【参考方案1】:

另一个建议:

>>> s = "DATA(VALUE1|VALUE2||VALUE4)"
>>> import re
>>> matches = re.findall("[^()]+", s)
>>> matches
['DATA', 'VALUE1|VALUE2||VALUE4']
>>> result = matches[0]: matches[1].split("|")
>>> result
'DATA': ['VALUE1', 'VALUE2', '', 'VALUE4']

【讨论】:

【参考方案2】:

您可以使用re.split 一次性完成:

In [10]: import re

In [11]: line = 'DATA(VALUE1|VALUE2||VALUE4)'

In [12]: re.split(r'[(|)]', line)
Out[12]: ['DATA', 'VALUE1', 'VALUE2', '', 'VALUE4', '']

然后像这样提取数据和值:

In [13]: parts = re.split(r'[(|)]', line)

In [14]: data = parts[0]

In [15]: values = parts[1:-1]

In [16]: values
Out[16]: ['VALUE1', 'VALUE2', '', 'VALUE4']

【讨论】:

【参考方案3】:
import re
s = 'DATA(VALUE1|VALUE2|VALUE4)'

然后

re.search(r"(.*)\((.*)\)", s).group(2).split("|")

给你

['VALUE1', 'VALUE2', 'VALUE4']

re.search(r"(.*)\((.*)\)", s).group(1)

给你

'DATA'

【讨论】:

以上是关于Python:拆分包含括号和|的复杂字符串的主要内容,如果未能解决你的问题,请参考以下文章

在python中拆分字符串

Python - 正则表达式将数据框中的一列拆分为 2 [重复]

Python - 包含字符串和整数的拆分列表

如何在 c++ 中将字符串拆分为左括号和右括号之间的字符串列表?

PHP 和 RegEx:用不在括号内的逗号(以及嵌套括号)拆分字符串

递归拆分包含一组已定义前缀的字符串 - Python