擅长:python、mysql、java
<p>使用<code>re.sub</code>函数和<em>替换回调</em>的解决方案:</p>
<pre><code>def shortenDigits(m):
d = {'10': '1', '20': '2', '30': '3'}
val = m.group(2)
return m.group(1) + (val if val not in d else d[val])
with open('test.txt', 'r') as fh:
lines = fh.readlines()
replaced = [re.sub(r'^(\d{4}-\d{2}-\d{2} )(\d{2})', shortenDigits, l) for l in lines]
print(replaced)
</code></pre>
<p>输出:</p>
<pre><code>['2015-04-18 1 101011\n', '2015-04-18 1 102000\n', '2015-04-18 2 222222\n', '2015-04-18 2 100000\n']
</code></pre>