Ein*_*nar 5 python regex string parsing
在测试文件中,我在表单中有记录
DATA(VALUE1|VALUE2||VALUE4)
Run Code Online (Sandbox Code Playgroud)
等等.
我想把这个字符串分成两个句子,第一个产生"DATA",第二个给出括号里面的内容,分成"|".第二部分看起来微不足道,但到目前为止,我在第一部分的尝试都是丑陋的.
我更倾向于使用正则表达而不是解析,因为最终线条非常简单.
您可以通过以下方式一次性完成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', '']
Run Code Online (Sandbox Code Playgroud)
并像这样提取数据和值:
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']
Run Code Online (Sandbox Code Playgroud)
另一个建议是:
>>> 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']}
Run Code Online (Sandbox Code Playgroud)