在另一个文件中搜索一个文件的内容:python

时间:2013-06-15 21:12:07

标签: python search for-loop

我正在尝试从文件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-虽然这个程序可以达到目的,但预计它的内存效率如何?请建议。

由于

1 个答案:

答案 0 :(得分:1)

  

1 - 我希望如果我改变file2中的行顺序,我应该得到较少数量的匹配但我仍然得到所有匹配。为什么呢?

您的程序会完整cross-join所有行,因此您将始终获得完整的结果。

  

2-虽然这个程序可以达到目的,但预计它的内存效率如何?请建议。

可怕。只读最短的文件到内存中,然后迭代更长的文件一次。

with open('bigfile.txt', 'r') as bigfile:
  for bigline in bigfile:
    for littleline in littlefiledata:
       ...