我已經制作了這個CSV文件來玩。從我以前告訴過的,我很確定這個CSV文件是有效的,可以在這個例子中使用。搜索CSV文件(Python)
基本上我有這個CSV文件「book_list.csv」:
name,author,year
Lord of the Rings: The Fellowship of the Ring,J. R. R. Tolkien,1954
Nineteen Eighty-Four,George Orwell,1984
Lord of the Rings: The Return of the King,J. R. R. Tolkien,1954
Animal Farm,George Orwell,1945
Lord of the Rings: The Two Towers, J. R. R. Tolkien, 1954
而且我也有這個文本文件「search_query.txt」,因此我把我要搜索的關鍵字,結果搜索字詞CSV文件:
Lord
Rings
Animal
我現在想出了一些代碼(用的東西,我讀過的幫助下),讓我來算匹配條目的數量。然後我有程序寫一個單獨的CSV文件'results.csv',它只返回'匹配'或''。
該程序然後採用這個'results.csv'文件並計算我有多少'匹配'結果,並打印計數。
import csv
import collections
f1 = file('book_list.csv', 'r')
f2 = file('search_query.txt', 'r')
f3 = file('results.csv', 'w')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
input = [row for row in c2]
for booklist_row in c1:
row = 1
found = False
for input_row in input:
results_row = []
if input_row[0] in booklist_row[0]:
results_row.append('Matching')
found = True
break
row = row + 1
if not found:
results_row.append('')
c3.writerow(results_row)
f1.close()
f2.close()
f3.close()
d = collections.defaultdict(int)
with open("results.csv", "rb") as info:
reader = csv.reader(info)
for row in reader:
for matches in row:
matches = matches.strip()
if matches:
d[matches] += 1
results = [(matches, count) for matches, count in d.iteritems() if count >= 1]
results.sort(key=lambda x: x[1], reverse=True)
for matches, count in results:
print 'There are', count, 'matching results'+'.'
在這種情況下,我的輸出回報:
There are 4 matching results.
我敢肯定有這樣做的,避免寫一個完全獨立的CSV文件的一個更好的辦法..但對我來說這是比較容易讓我的頭靠近。
我的問題是,我已經放在一起的這段代碼只返回有多少匹配的結果。如何修改它以便返回ACTUAL結果呢?
即我希望我的輸出返回:
There are 4 matching results.
Lord of the Rings: The Fellowship of the Ring
Lord of the Rings: The Return of the King
Animal Farm
Lord of the Rings: The Two Towers
正如我所說的,我敢肯定有一個更簡單的方法做什麼我已經有..所以一些見解將是有益的。 :)
乾杯!
編輯:我只是意識到,如果我的關鍵字是小寫,它不會工作..有沒有辦法避免區分大小寫?