0

我目前正在尝试编写一个通过学术论文的 CSV 文件运行的程序。CSV 以制表符分隔,分为四列(作者、日期、标题、期刊)

这个想法是询问用户是否要通过作者、论文标题或期刊标题搜索该组论文(或按 Q 退出),并将查询结果按以下顺序显示给用户:Author/s . 年。标题。杂志。

我的代码运行,但它只从我选择的“搜索选项”中检索数据。IE,如果我选择按作者搜索,它会拉回并显示姓名与查询匹配的作者,但不会显示任何其他信息(年份、标题或期刊)。这与其他搜索选项相同(即,如果我选择期刊,它将拉回任何相关期刊,但不会给我该期刊的作者、日期或标题)

非常感谢这里的任何帮助!下面是我的代码。

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()

非常感谢任何提供帮助的人,非常感谢!

我已经用谷歌搜索并阅读了 CSV 参考页面,但我似乎无法理解它。Aagin,感谢所有帮助!

4

2 回答 2

1

该列表Author除了作者之外不包含任何内容。当你这样做时for item in Author,你只是在浏览作者。当您然后打印找到的项目时,当然只有作者。每个字段都有相同的问题。您有四个单独的字段列表,它们没有以任何方式链接。

我建议你看看这个pandas库,它有很好的工具来将 CSV 文件读入表格数据结构。它还可以做更多的事情,但它应该可以轻松处理您想要在此处执行的操作。

于 2013-05-02T19:44:34.023 回答
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

所以现在你拿整行,然后find()在第三列运行你的(你说的是标题),如果它和你的一样,titleSearch它将打印整行的所有信息,问题就解决了!

于 2013-05-02T20:03:09.813 回答