2013-06-05 18 views
0

我想創建一個python函數,爲我操縱一些數據。 我看起來像這樣的兩個文本文件:python程序結合兩個文件(有wordcount),併發布比例

文本文件1:

89 man 
    32 is 
    22 the 
    3 best 

文本文件2:

54 man 
    43 dog 
    34 best 
    13 dude 

我需要創建一些類型的函數,它textfile1textfile2爲的話。請注意,有些詞不會出現在兩者中,但不應排除它們,因爲它們是分析所需的。我不知道如何去做這部分分析。這些文件有成千上萬行,不幸的是,基本的bash腳本不會讓你如此。

+1

數字也重要嗎? –

+0

數字代表wordcount,文本文件是使用tr,uniq和sort排序的基本bash wordcount的結果。我試圖區分兩個主題之間的uniqe wordcount。 –

+0

我不明白爲什麼bash不能完成所有工作。 – NullUserException

回答

1

我從你的問題中瞭解到,當你在兩個文件中找到它們時,你想要做的是數字的比例,否則只是打印它們的原始值。你可以這樣做:

lines1 = [i.split() for i in open('tmp.txt').readlines()] 
values,keys = zip(*lines1) 
dict1 = dict(zip(keys,values)) 
lines2 = [i.split() for i in open('tmp2.txt').readlines()] 
values,keys = zip(*lines2) 
dict2 = dict(zip(keys,values)) 
dict3 = {} 
for k1,v1 in dict1.items(): 
    v2 = dict2.get(k1) 
    if v2: 
     dict3[k1] = str(float(v1)/float(v2)) 
    else: 
     dict3[k1] = v1 
for k2,v2 in dict2.items(): 
    if not dict3.get(k2): 
     dict3[k2] = v2 
out = open('output.txt','w') 
out.writelines(['%s\t%s\n' %\ 
    (k[0],dict3[k[0]]) for k in sorted(dict3.items(), key=lambda x:x[1])]) 
out.close() 
+0

是多數民衆贊成在輝煌:) –

+0

我會看到增加的唯一的比例是從最大到最小的順序列出,但我已經非常高興與這一個。 –

+0

@ RHK-S8將'dict3'寫入輸出文件時,您可以輕鬆更改該選項。如果您發現它符合您的需求,您可以將問題切換爲已接受的狀態... –