2009-10-02 103 views
0

我在列中的每一行中都有許多Excel句子列表。我有3個或更多的這樣的句子列。這些中有一些常見的句子。是否有可能創建一個腳本來創建一個維恩圖並獲得所有維納圖之間的共同點。句子列表中的維恩圖

示例:這些是列中的句子。同樣有不同的列。癌症

血液淋巴細胞從患者

卵巢tumor_Grade III

腹膜tumor_Grade IV

激素抵抗PCA

是否可以用Python語言編寫一個腳本

血淋巴細胞?

+3

請通過也讓你的願望給這個輸入數據的準確輸出完成你的問題,否則它需要大量的猜測來解釋你的單詞(例如,在示例輸入中沒有「所有人之間通用」的單詞;有一些單詞和單詞序列在兩個單詞中是常見的 - 你想如何表達大小寫,即你想要什麼輸出?)。 –

回答

0

你的問題並不完全清楚,所以我可能會誤解你在找什麼。

維恩圖只是一些簡單的設置操作。 Python在Set數據類型中內置了這些東西。基本上,將兩組物品並使用設定操作(例如,使用intersection查找常用物品)。

要讀取數據,您最好的選擇可能是將文件保存爲CSV格式,並使用字符串split方法解析。

2

這是我的問題的解釋...

給數據文件z.csv(從Excel的數據導出爲CSV文件)

"Blood lymphocytes from cancer","Blood lymphocytes from sausages","Ovarian tumor_Grade III" 
"Blood lymphocytes from patients","Ovarian tumor_Grade III","Peritoneum tumor_Grade IV" 
"Ovarian tumor_Grade III","Peritoneum tumor_Grade IV","Hormone resistant PCA" 
"Peritoneum tumor_Grade XV","Hormone resistant PCA","Blood lymphocytes from cancer" 
"Hormone resistant PCA",,"Blood lymphocytes from patients" 

該程序發現共同的句子所有列

import csv 

# Open the csv file 
rows = csv.reader(open("z.csv")) 

# A list of 3 sets of sentences 
results = [set(), set(), set()] 

# Read the csv file into the 3 sets 
for row in rows: 
    for i, data in enumerate(row): 
     results[i].add(data) 

# Work out the sentences common to all rows 
intersection = results[0] 
for result in results[1:]: 
    intersection = intersection.intersection(result) 

print "Common to all rows :-" 
for data in intersection: 
    print data 

而且它打印這個答案

Common to all rows :- 
Hormone resistant PCA 
Ovarian tumor_Grade III 

不是100%確定那是你正在尋找的東西,但希望它能讓你開始!

它可以很容易地推廣到儘可能多的列你喜歡,但我不想使問題更加複雜