0

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

谢谢

4

1 回答 1

1

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

您的程序对所有行进行了完全交叉连接,因此您将始终获得完整的结果。

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

可怕。只将最短的文件读入内存并遍历较长文件的行一次。

with open('bigfile.txt', 'r') as bigfile:
  for bigline in bigfile:
    for littleline in littlefiledata:
       ...
于 2013-06-15T21:17:07.557 回答