回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>如何拆分这个多重分隔符而不创建两个列表并附加(这似乎非常影响性能)。你知道吗</p>
<pre><code>string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[156]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV']
</code></pre>
<p><strong>简单<code>re.split(r'[.|]')</code></strong>不起作用,因为在字符串的第二部分。你知道吗</p>
<pre><code>string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|.Y|'
re.split(r'[./|]', string)
Out[179]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F', 'g', '', 'Y', '']
</code></pre>
<p>数据<code>NOPQ</code>和<code>RSTUV</code>可能包含<code>.</code>,但它不是分隔符。管道分隔列的数目可能会增加。但是,总是在第一个<code>|</code>之前,分隔符<code>.</code>在第一个<code>|</code>之后是分开的,只有<code>|</code>是分隔符。你知道吗</p>
<p>几乎没有其他可能的数据组合</p>
<pre><code>string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|DFGR'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[174]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'DFGR']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D.F.GR.'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[176]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D.F.GR.']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|.Y|'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[178]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F.g', '.Y', '']
string = 'ABCD.EFGH.IJKLM|NOPQ|RSTUV|D|F.g|Y|H|J|K|R|Y'
string.split("|")[0].split(".") + string.split("|")[1:]
Out[181]: ['ABCD', 'EFGH', 'IJKLM', 'NOPQ', 'RSTUV', 'D', 'F.g',
'Y', 'H', 'J', 'K', 'R', 'Y']
</code></pre>