2016-05-11 77 views
-1

我遇到了一些我認爲應該很容易的問題。比較兩個文件並返回匹配項

我有兩個文件,都是tsv。一種是像這樣的名單:

Thing1 
Thing2 
Thing3 
Thing4 
... 

另外就是這些「物」之間的相互作用的列表,它看起來像這樣:

Thing1 Thing2 0.726 
Thing3 Thing2 0.742 
Thing1 Thing4 0.761 

所有我想要做的是採取該列表並返回列表中項目的名稱,這些項目出現在我的第二個交互文件中。我認爲這應該是相當直接的,但我似乎無法得到它的工作。

到目前爲止,我已經嘗試了一些東西,但最基本的看起來像這樣:

import csv 
import sys 

ints = sys.argv[1] 

name_list = open('Names', 'rb') 
int_list = open(ints, 'rb') 

for i in int_list: 
    for names in name_list: 
     if i == name: 
      print(name) 

我敢肯定,我失去了一些東西非常基本在這裏,但任何幫助,將不勝感激。

乾杯:)

+0

您是否嘗試過在循環內打印變量以查看「行」是什麼? (它不是'Thing1' ...) – leo

+0

另外:您正在導入頂部的CSV庫。你可能想考慮使用它,因爲這對你來說會更容易。 – leo

+0

[在Python中解析複雜製表符分隔/ csv文件的循環]的可能重複(http://stackoverflow.com/questions/20108308/loop-for-parsing-complex-tab-delimited-csv-files-in-python) – leo

回答

0

必須在您的名字分爲3個部分(文件的第一個名稱,互動文件和值)是這樣的:這種分裂後

for i in int_list: 
    for names in name_list: 
     name = names.split(' ') 

,你可以使用name[0]來測試通信。

0

熊貓的數據框可能會幫助你很多。

import pandas as pd 

name_list = pd.read_csv('Names',sep = '\t') 
int_list = pd.read_csv('ints',sep = '\t') 

int_list[int_list.isin(name_list)] 
相關問題