擅长:python、mysql、java
<p>当解析像这样的复杂字符串时,使用两阶段方法通常更容易。如果我们首先拆分每个字符串:</p>
<pre><code>temp = foo.split(')')[0:3]
</code></pre>
<p>为第一个字符串提供一个字符串列表:</p>
<pre><code>temp = ['[frank bora three](noun', ' [go](action', ' level [three hundred sixty](value']
</code></pre>
<p>现在我们可以编写更简单的正则表达式,从每个子字符串中提取所需的文本:</p>
<pre><code>re_text = re.compile(r'\[.+\]')
re_entity = re.compile(r'\(.+')
mytext = []
myentitites = []
for target in temp:
mytext.append(re.search(re_text, target).group().strip('[]'))
myentities.append(re.search(re_entity, target).group().strip('()'))
</code></pre>
<p>现在您有两个列表:</p>
<pre><code>mynouns = ['frank bora three', 'go', 'three hundred sixty']
myentities = ['noun', 'action', 'value']
</code></pre>
<p>将它们压缩在一起,并创建一个新的元组对列表:</p>
<pre><code>result = list(zip(mynouns, myentities)) #fix
</code></pre>
<p>看起来是这样的:</p>
<pre><code>[('frank bora three', 'noun'),
('go', 'action'),
('three hundred sixty', 'value')]
</code></pre>
<p>现在你可以把这些输入到一个字符串中。(要为所需输出对该字符串集合进行分组,您可以创建一个字符串列表,然后在输出到文件之前按最后一个字对其进行排序)</p>