2013-05-02 53 views
0

我目前正在嘗試編寫一個程序,該程序運行的是學術論文的CSV文件。 CSV是製表符分隔,分爲四列(作者,日期,標題,期刊)Python草圖不按預期工作(從CSV中讀取數據)

想法是詢問用戶他是否想通過作者,論文標題或期刊標題(或按Q退出),並按照以下順序將查詢結果顯示給用戶:作者/ s。年。標題。日誌。

我的代碼運行,但它只從我選擇的'搜索選項'中檢索數據。 I.E,如果我選擇按作者搜索,它將撤回並顯示名稱與查詢匹配的作者,但不會顯示任何其他信息(年,標題或期刊)。這與其他搜索選項相同(即如果我選擇Journal,它將撤消任何相關期刊,但不會給我作者,日期或所述期刊的標題)

此處的任何幫助都非常感謝!以下是我的代碼。

import csv 


def AuthorSearch(): 
    authorSearch = input("Please type Author name. \n") 
    for item in Author: 
     if item.find(authorSearch) != -1: 
      print (item) 

def TitleSearch(): 
    titleSearch = input("Please type in Title, \n") 
    for item in Title: 
     if item.find(titleSearch) != -1: 
      print (item) 

def JournalSearch(): 
    journalSearch = input("Please type in a Journal, \n") 
    for item in Journal: 
     if item.find(journalSearch) != -1: 
      print (item) 






data = csv.reader (open('List.txt', 'rt'), delimiter='\t') 


Author, Year, Title, Journal = [], [], [], [] 

for row in data: 
    Author.append(row[0]) 
    Year.append(row[1]) 
    Title.append(row[2]) 
    Journal.append(row[3]) 


print ("Please type in capitals.") 
searchOption = input("Press A to search for Author, T to search titles or J to search Journals or press Q to quit. \n") 

if searchOption == 'A': 
AuthorSearch() 

elif searchOption == 'T': 
    TitleSearch() 

elif searchOption == 'J': 
    JournalSearch() 

elif searchOption == 'Q': 
    exit() 

非常感謝任何人的幫助,非常感謝!

我用Google搜索和閱讀的CSV引用頁面,但我似乎無法讓我的頭周圍。 Aagin,所有幫助表示讚賞!

回答

0

你的問題是你把你所有的信息放到單獨的數組中......但是你這樣做是因爲你知道他們的列號......所以只要保持原樣並按號碼撥打即可!

everything = [] 
for row in data: 
    everything.append[row] 

這裏是您的標題搜索功能爲例:

def TitleSearch(): 
    titleSearch = input("Please type in Title, \n") 
    for row in everything: 
     title = row[2] 
     if title.find(titleSearch) != -1: 
      print row 

所以現在你把整個行,只是在第3列(你說的那個是冠軍),並運行find()如果它與您的titleSearch相同,它將打印整行所有信息,問題解決!

+0

非常感謝你!這非常有效。如果我可以給代表我會,但唉,我是一個新用戶,所以我可以給你所有我非常感謝。 – 2013-05-02 22:54:56

+0

以及你可以upvote和標記我的答案是正確的哈哈。但當然,很高興我能幫上忙! – 2013-05-02 23:14:24

1

列表Author不包含任何東西,但作者。當你做for item in Author時,你只能看作者。當你打印找到的項目時,當然只有作者。你在每個領域都有同樣的問題。您有四個不以任何方式鏈接的單獨列表。

我建議你看看pandas這個庫,它有很好的把CSV文件讀入表格數據結構的功能。它也做了很多,但它應該很容易處理你想在這裏做的事情。

+0

熊貓很棒,但可能矯枉過正(雖然它會很好)。你想列出一個列表,然後在子列表中搜索相關的索引。 – katrielalex 2013-05-02 19:56:21

+0

我認爲這需要安裝嗎?這個程序是一個任務,將在不同的計算機上運行,​​所以我不認爲這是一個選項。 感謝您的幫助,雖然我檢查了熊貓,它看起來很有幫助。可悲的是不在這種情況下。 – 2013-05-02 19:56:29

+0

非常感謝凱蒂 - 這很有道理。我會給它一個爆炸! – 2013-05-02 19:57:37