如何检查列表中的项目是否出现在csv中?

时间:2016-11-26 21:03:26

标签: python list 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的新手,非常感谢任何帮助!感谢

4 个答案:

答案 0 :(得分: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。当有很多物品时,速度会有所不同。

答案 1 :(得分: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)

答案 2 :(得分: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    

答案 3 :(得分: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])