擅长:python、mysql、java
<pre><code>import re
pat = re.compile(r"----\s+(.*?) \((.*?)\) (?:changed status from (\w+) to|became) (\w+) @ (.*?) ----\s*")
with open("data.txt") as f:
for line in f:
(name, email, prev, curr, date) = pat.match(line).groups()
print "{0}/{1} {2} {3} {4}".format(name, email, prev or "NaN", curr, date)
</code></pre>
<p>这就假设了空白,并且假设每一行都符合模式。如果您想优雅地处理脏输入,可能需要添加错误检查(例如检查<code>pat.match()</code>不返回<code>None</code>)。</p>