关于python:如何比较和合并不同列号的文本文件?

How to compare and merge text files with differing column numbers?

有人能告诉我如何在python中执行下面的合并吗?

文本文件第1页:

1
2
3
4
5     apple
1     banana
3     pear
4     kiwi

(再加上几千个条目)

我的文本文件2看起来像

1
2
3
4
apple
orange    
strawberry
banana

我希望合并这两个文本文件,这样我只添加这两个文件中的那些文件,同时保留文本文件1链接到相应标识符的原始数字。所以在这个例子中,我的合并如下所示:

1
2
5     apple
1     banana


以下是一种可能的方法:

编辑:考虑评论

我先把你的文本文件1读到一本python字典里

1
2
3
4
5
6
7
8
9
d = dict()
with open("file1.txt") as f:
    for line in f:
       (val, key) = line.split()
       d[key] = int(val)

print d

Out: {'kiwi': 4, 1: 'banana', 3: 'pear', 4: 'kiwi', 5: 'apple', 'pear': 3, 'banana': 1, 'apple': 5}

现在,我们将文件2作为python列表读取

1
2
3
4
5
with open("file2.txt") as f:
    l = f.read().splitlines()

print l
Out: ['apple', 'orange', 'strawberry', 'banana']

现在,创建另一个具有所需输出的字典:

1
2
3
d2 = {key:val for key,val in d.iteritems() if key in l}
print d2
Out: {'apple': 5, 'banana': 1}

我将由你来决定如何把字典写进一个文本文件。我将使用pandas将其转换为数据帧,并将数据帧写为csv或tsv。这是一个解决方法,必须有一个更直接的方法。


我很抱歉之前没有提供我的尝试信息(我不是想免费索取代码,只是被卡住了,需要一些指导)。

基本上,我有一个文本文件,段落格式为700000个单词,我想计算这些单词,并将其交叉引用到另一个列表格式的文档中。我走了这么远

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fname = raw_input("Enter file name:")
fh = open(fname)
inp = fh.read().upper()
new_fh2 = inp.replace('.','').replace(',','').replace('?','')
new_fh3 = new_fh2.replace('-','').replace('_','').replace(';','')
new_fh4 = new_fh3.replace(':','').replace('!','').replace('(','')
new_fh5 = new_fh4.replace(')','').replace('/','')
new_fh6 = new_fh5.replace('|','').replace('&','').replace('[','')
new_fh7 = new_fh6.replace(']','').replace('%','').replace('+','')
new_fh8 = new_fh7.replace('*','').replace('@','').replace('=','')
new_fh9 = new_fh8.replace('>','').replace('<','')
new_fh10 = new_fh9.replace('{','').replace('}','').replace('~','')
new_fh11 = new_fh10.replace('"','').split()
new_fh12 = sorted(set(new_fh11))
for word in new_fh12:
    print new_fh11.count(word), word`

在这一点上,我准备使用libreoffice库使用两个表进行比较,但即使使用count函数(字数从700K减少到34K),只要我尝试上传,输入的数据就会使程序崩溃。所以我不得不试着想出一个代码,可以让我比较一下python中的两个txt文件,它可以很好地处理这个数据量。我真的不知道从哪里开始,虽然我知道一些合并函数,但我不知道如何定义合并。我最终做了这个

1
2
3
4
new_fh12 = new_fh11.split()
new_fh12.sort()
for x in sorted(new_fh12):
    print x

然后我把这个列表放到Excel的一列中,将第二个列表添加到另一列中,然后使用countif函数对两个列表进行计数和比较。