在另一个文件中搜索一个文件的内容:python
我试图从文件2中的文件1中搜索名称,并在匹配行上合并一些数据 文件1:在另一个文件中搜索一个文件的内容:python,python,search,for-loop,Python,Search,For Loop,我试图从文件2中的文件1中搜索名称,并在匹配行上合并一些数据 文件1: A 28 sep 1980 B 28 jan 1985 C 25 feb 1990 D 27 march 1995 和文件2 A hyd B alig C slg D raj 使用此选项: import sys data1 = open(sys.argv[1]).read().rstrip('\n') data2 = open(sys.argv[2]).read().
A 28 sep 1980
B 28 jan 1985
C 25 feb 1990
D 27 march 1995
和文件2
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-我希望如果我改变文件2中行的顺序,我应该得到更少的匹配项,但我仍然得到所有匹配项。为什么?
2-尽管此程序可达到此目的,但预期的内存效率如何?请建议
谢谢
1-我希望如果我改变文件2中行的顺序,我应该得到更少的匹配项,但我仍然得到所有匹配项。为什么?
您的程序执行全部行,因此您将始终获得完整的结果
2-尽管此程序可达到此目的,但预期的内存效率如何?请建议
糟透了。只将最短的文件读入内存,并在较长文件的行上迭代一次
with open('bigfile.txt', 'r') as bigfile:
for bigline in bigfile:
for littleline in littlefiledata:
...
谢谢你的建议。对于文件大小,文件1和文件2的差别不大(可能是10-20%),但它们的大小相当于4-10GB。因此,我的问题是“可以做些什么来提高性能?”将较小的文件转换为字典而不是反复迭代是否更有意义?