擅长:python、mysql、java
<p>老实说,我不会在这个工作中使用正则表达式。你知道吗</p>
<p>用<code>TSH</code>拆分然后稍后清理似乎要容易得多。你知道吗</p>
<p>如果数据在<code>data</code>,我们可以这样做:</p>
<pre><code>blocks = [ "TSH" + block for block in data.split("TSH") ]
</code></pre>
<p>第一块是假的,所以把它扔掉:</p>
<pre><code>blocks = blocks[1:]
</code></pre>
<p>最后一个块有额外的<code>"EXT;\n"</code>,所以也清理一下:</p>
<pre><code>blocks = blocks[-1] = blocks[-1][:-len("EXT;\n")]
</code></pre>
<p>就这样,你完了。你知道吗</p>
<p>当然,这是假设<code>TSH</code>不能出现在数据的中间。如果是这样,您可以按换行来拆分数据,查看哪些行以<code>TSH</code>开头,然后使用这些索引来分割数据。你知道吗</p>
<p>这是一个非常讨厌的班轮:</p>
<pre><code>["\n".join(data.split()[i:j]) for i, j in zip(*(lambda a, b: (a, next(b) and b))(*itertools.tee(itertools.chain(( i for i, line in enumerate(data.split()) if line.startswith("TSH")), (len(data.split()),)))))]
</code></pre>