擅长:python、mysql、java
<p>您可以使用一个包含OR的regex来决定要解析哪种数据。我把正则表达式隔开,以便注释和清晰。你知道吗</p>
<pre><code>data = 'val11,val12;val21,val22;valn1,valn2;final_val'
pat = re.compile(r'''
(?P<pair> # either comma separated ending in semicolon
(?P<entry_1>[^,;]+) , (?P<entry_2>[^,;]+) ;
)
| # OR
(?P<end_part> # the ending token which contains no comma or semicolon
[^;,]+
)''', re.VERBOSE)
results = []
for match in pat.finditer(data):
if match.group('pair'):
results.append(match.group('entry_1', 'entry_2'))
elif match.group('end_part'):
results.append(match.group('end_part'))
print(results)
</code></pre>
<p>这将导致:</p>
<pre><code>[('val11', 'val12'), ('val21', 'val22'), ('valn1', 'valn2'), 'final_val']
</code></pre>