我正在尝试从文件2中的文件1中搜索名称,并在匹配的行上合并一些数据
文件1:
A 28 sep 1980
B 28 jan 1985
C 25 feb 1990
D 27 march 1995
和file2
A hyd
B alig
C slg
D raj
使用此:
import sys
data1 = open(sys.argv[1]).read().rstrip('\n')
data2 = open(sys.argv[2]).read().rstrip('\n')
list1 = data1.split('\n')
list2 = data2.split('\n')
for line in list1:
for item in list2:
if line.split('\t')[0] in item.split('\t')[0]:
print(item,'\t',line.split('\t')[3])
结果:
A hyd 1980
B alig 1985
C slg 1990
D raj 1995
两个问题(澄清概念):
1 - 我希望如果我改变file2中的行顺序,我应该得到较少数量的匹配但我仍然得到所有匹配。为什么呢?
2-虽然这个程序可以达到目的,但预计它的内存效率如何?请建议。
由于
答案 0 :(得分:1)
1 - 我希望如果我改变file2中的行顺序,我应该得到较少数量的匹配但我仍然得到所有匹配。为什么呢?
您的程序会完整cross-join所有行,因此您将始终获得完整的结果。
2-虽然这个程序可以达到目的,但预计它的内存效率如何?请建议。
可怕。只读最短的文件到内存中,然后迭代更长的文件一次。
with open('bigfile.txt', 'r') as bigfile:
for bigline in bigfile:
for littleline in littlefiledata:
...