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函数对两个列表进行计数和比较。