<p>这是我想出的最快的。我相信还有更优雅的解决方案</p>
<pre><code>text = '''TextTextTextTextTextTextTextTextText1
TextTextTextTextTextTextTextTextText1
TextTextTextTextTextTextTextTextText2
TextTextTextTextTextTextTextTextText2
TextTextTextTextTextTextTextTextText2
TextTextTextTextTextTextTextTextText2
TextTextTextTextTextTextTextTextText2
TextTextTextTextTextTextTextTextText3
TextTextTextTextTextTextTextTextText3
TextTextTextTextTextTextTextTextText3
TextTextTextTextTextTextTextTextText4
TextTextTextTextTextTextTextTextText4
TextTextTextTextTextTextTextTextText4'''
lines = text.split('\n')
# Count spaces in each line
indent_lst = [line.count(' ') for line in text.splitlines(True)]
# Find where indentation changes
indices = []
for idx in range(len(indent_lst[1:])): # Start at second element in list
# Here I assume, that the indentation is constant. A change from more spaces to fewer spaces means,
# that a new block has started
if indent_lst[idx-1] > indent_lst[idx]: # Look back at previous element and compare with current
indices.append(idx)
final_lst = []
# Use slicing to append from block to block
for idx in range(len(indices)):
if indices.index(indices[idx]) == (len(indices) -1 ): # Take care of last block
final_lst.append(''.join(lines[indices[idx]:]))
else:
final_lst.append(''.join(lines[indices[idx]:indices[idx+1]])) # Add block to final list
print(final_lst)
</code></pre>
<p>结果如下:</p>
<pre><code>['TextTextTextTextTextTextTextTextText1 TextTextTextTextTextTextTextTextText1', ' TextTextTextTextTextTextTextTextText2 TextTextTextTextTextTextTextTextText2 TextTextTextTextTextTextTextTextText2 TextTextTextTextTextTextTextTextText2 TextTextTextTextTextTextTextTextText2', ' TextTextTextTextTextTextTextTextText3 TextTextTextTextTextTextTextTextText3 TextTextTextTextTextTextTextTextText3', ' TextTextTextTextTextTextTextTextText4 TextTextTextTextTextTextTextTextText4 TextTextTextTextTextTextTextTextText4']
</code></pre>
<p>我希望这已经对您有所帮助,如果您有任何问题,请随时提问</p>