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

2024-06-02 09:09:40 发布

您现在位置:Python中文网/ 问答频道 /正文

谁能告诉我如何在Python中执行以下合并。。。你知道吗

文本文件#1:

5     apple
1     banana
3     pear
4     kiwi

(再加上几千个条目)

我的文本文件#2看起来像

apple
orange    
strawberry
banana

我想合并这两个文本文件,这样我就只添加了两个文本文件中的那些文件,但同时也保留了文本文件#1链接到相应标识符的原始编号。在本例中,我的合并如下所示:

5     apple
1     banana

Tags: 文件apple链接条目标识符编号bananapear
2条回答

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

基本上,我有一个txt文件与700000字的段落形式,我想数的话,并交叉引用到另一个文件,这是在列表形式。我走了这么远

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 Base使用2个表进行比较,但即使使用count函数,将字数从700k减少到34k,只要我尝试上载,输入数据就会使程序崩溃。所以我不得不试着去想一个代码,它可以让我比较python中的两个txt文件,它可以很好地处理这些数据量。我真的不知道从哪里开始,虽然我知道一些合并函数,但我只是不知道如何定义合并。最后我做了这个

new_fh12 = new_fh11.split()
new_fh12.sort()
for x in sorted(new_fh12):
    print x

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

以下是一种可能的方法:

编辑:考虑评论

我会先把你的文本文件#1读入Python字典

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列表读取

with open("file2.txt") as f:
    l = f.read().splitlines()

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

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

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

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

相关问题 更多 >