2016-11-26 55 views
3

我有一個項目列表:如何檢查列表中的項目是否出現在csv中?

List = ['apple', 'banana', 'orange'] 

和CSV文件:

apple 
kiwi 
banana 
orange 
pear 

我想看到列表中的每個項目,如果它的CSV的第一列匹配,並且如果是這樣,在行的末尾附加'1'(否則附加'0'),但我有點失落。下面的代碼幾乎是我想要得到的最終結果。

apple, 1 
kiwi, 0 
banana, 1 
orange, 1 
pear, 0 

新的Python,真的希望任何幫助!謝謝

回答

1

我嘗試下面的代碼,這將結果保存CSV

import csv 

lists = ['apple', 'banana', 'orange'] 
nf = csv.writer(open("output.csv", "w")) 
with open('input.csv', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     if(''.join(row) in lists): 
      nf.writerow([''.join(row),1]) 
     else: 
      nf.writerow([''.join(row),0]) 

輸出CSV

apple,1 
kiwi,0 
banana,1 
orange,1 
pear,0  
+0

謝謝!這很有用 – hsifyllej

+0

@hsifyllej樂於幫忙,並歡迎來到Stack Overflow。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。 –

1

請注意,您的csv文件是一個純文本文件。但也是一個有效的csv,所以我會像一個一樣對待它。

一行一行地閱讀,並使用三元表達式在數據旁邊打印0或1。快速&方便,無字典或計數器需要,並保留順序:

import csv 

List = {'apple', 'banana', 'orange'} 

with open("csv.csv") as f: 
    cr = csv.reader(f) 
    for row in cr: 
     print("{}, {}".format(row[0],1 if row[0] in List else 0)) 

,因爲它不是一個真正的CSV,通過讀行基本路線將做太多:

List = {'apple', 'banana', 'orange'} 

with open("csv.csv") as f: 
    for item in f: 
     item = item.strip() 
     print("{}, {}".format(item,1 if item in List else 0)) 

注意,在這兩個例子我已使用set,而不是list。當有很多項目時,速度會有所不同。

0

爲此,可以使用Python標準庫中的csv模塊,具體the csv.reader() method.

import csv 

fruit_list = ['apple', 'banana', 'orange'] 
fruit_in_file = {} 

with open('csv_file.csv', 'r') as csvfile: 
    fruit_reader = csv.reader(csvfile) 
    for row in fruit_reader: 
     fruit = row[0] 
     if fruit in fruit_list: 
      fruit_in_file[fruit] = 1 
     else: 
      fruit_in_file[fruit] = 0 

print(fruit_in_file) 
>>> {'apple': 1, 'kiwi': 0, 'orange': 1, 'banana': 1, 'pear': 0} 

實現這一目標後容易實現,似乎從你想寫包含此數據的csv文件的問題,所以我們將通過dict迭代,並使用csv.writer() method.寫入csv文件:

with open('new_csv_file.csv', 'w') as csvfile: 
    fruit_writer = csv.writer(csvfile) 
    for key, value in fruit_in_file.items(): 
     fruit_writer.writerow([key, value]) 
1

也許這樣的事情。它將從csv讀取,計算每個水果在您的列表中找到多少次,然後用新數據覆蓋csv文件。

import csv 

List = ['apple', 'banana', 'orange'] 
data = [] 
filename = 'file.csv' 

with open(filename, newline='') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     data.append(row) 

for item in List: 
    for fruit in data: 
     if item in fruit: 
      fruit[1] = int(fruit[1]) + 1 

with open(filename, 'w', newline='') as f: 
    writer = csv.writer(f) 
    writer.writerows(data) 
相關問題