擅长:python、mysql、java
<p>如果从包含文本的字符串<code>input_str</code>开始,那么使用正则表达式应该很快:</p>
<pre><code>re.search(r'List A\n\s*\{\n(.*?)\n\s*\}', input_str, re.DOTALL).group(1)
</code></pre>
<p>给予</p>
<pre><code>name,
place,
animal,
thing
</code></pre>
<p>您可以在正则表达式中看到文本的结构(<code>\n</code>是一个新行)。<code>.*?\n\}</code>匹配所有字符(<code>.*</code>表示任意数量的任意字符,包括换行符,这要归功于<code>DOTALL</code>)…但是当它遇到第一个<em>右大括号时(得益于<code>?</code>),就停止<em>。<code>\s*</code>表示不同数量的空格(因为问题中的大括号并不总是恰好位于行的开头)。你知道吗</p>
<p>如果您从一个文件开始,比如在您的示例中,那么可以使用上面的解决方案(使用<code>input_str = input_file.read()</code>),但是这有点浪费(因为这不必要地读取组的列表)。因此,另一种可能性是逐行读取文件,并动态地开始和停止收集数据(使用有限自动机)。但是,这似乎并不方便(除非您使用外部解析模块)。所以,如果您的文件不是太大,我认为上面的正则表达式解决方案是合适的。你知道吗</p>