擅长:python、mysql、java
<p>此方法涉及内存映射文件_1.txt,运行芬代尔通过它将行加载到由header键控的defaultdict中</p>
<pre><code>import re
import mmap
from collections import defaultdict
pat = re.compile('>.+?(?=(>|$))', re.DOTALL)
with open('file_1.txt') as f:
map = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
line_1 = defaultdict(list)
for line in pat.finditer(map):
fields = line.group().split('|')
key = '|'.join(fields[:6])
line_1[key].append(line.group())
map.close()
line_2 = []
with open('file_2.txt') as f:
for line in f:
fields = line.split('|')
key = '|'.join(fields[:6])
line_2.append(key)
line_2 = set(line_2)
for key in line_2.intersection(line_1.keys()):
print "".join(line_1[key])
</code></pre>