擅长:python、mysql、java
<p>这个怎么样:</p>
<pre><code>text = """a: text1
b: text2
c: text3
blah blah not necessary text
a: text4
b: text5
c: text6
etc."""
import re
from collections import defaultdict
d = defaultdict(list)
for line in textList:
m = re.match(r"([^:]+):\s*(.*)", line)
if m:
d[m.group(1)].append(m.group(2))
</code></pre>
<p>然后你得到</p>
<pre><code>>>> d
defaultdict(<type 'list'>, {'a': ['text1', 'text4'], 'c': ['text3', 'text6'],
'b': ['text2', 'text5']})
</code></pre>
<p>正则表达式标识至少包含一个标识符(<code>a</code>)的行,然后是一个冒号,并将标识符和冒号(<code>.*</code>)后面的文本放入匹配的组中。然后,它将结果放入一个“默认字典”,在引入内容时创建它的内容。你知道吗</p>
<p>如果事先知道标识符,可以使用</p>
<pre><code>m = re.match(r"(a|b|c|otherid|diff_id|etc)\s*:\s*(.*)", line)
</code></pre>
<p>相反。你知道吗</p>