我有一个项目列表:
List = ['apple', 'banana', 'orange']
和csv文件:
apple
kiwi
banana
orange
pear
我试图查看列表中的每个项目是否与csv的第一列匹配,如果匹配,请附加“' 1'到行的末尾(否则附加' 0'),但我有点迷失。下面的代码几乎就是我试图获得最终结果的原因。
apple, 1
kiwi, 0
banana, 1
orange, 1
pear, 0
我非常是python的新手,非常感谢任何帮助!感谢
答案 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])