[英]How do I add information from one CSV file to another based off of matching values in Python?
[英]python csv file add to field based off another field
我有一个 csv 文件如下所示:
我有一个名为“Inventory”的列,在该列中,我从另一个来源提取数据,并将其放入字典格式,如您所见。
我需要做的是遍历 1000 多行,如果它看到关键字:被子、床单和枕头存在,而不是在该行的“位置”列中写“床上用品”,否则写“家居时尚”如果陈述不正确。
我已经能够将它放到 if 语句中,告诉我它是否进入床上用品或“家居时尚”,我只是不知道如何告诉它将相应的结果写入该行的“位置”字段。
在我的脚本中,我打印只是为了查看我的结果,但最后我只想写入同一个 CSV 文件。
from csv import DictReader
with open('test.csv', 'r') as read_obj:
csv_dict_reader = DictReader(read_obj)
for line in csv_dict_reader:
if 'comforter' in line['Inventory'] and 'sheets' in line['Inventory'] and 'pillow' in line['Inventory']:
print('Bedding')
print(line['Inventory'])
else:
print('home-fashions')
print(line['Inventory'])
csv 的最后一列包含逗号。 您无法使用 DictReader 阅读它。
import re
data = []
with open('test.csv', 'r') as f:
# Get the header row
header = next(f).strip().split(',')
for line in f:
# Parse 4 columns
row = re.findall('([^,]*),([^,]*),([^,]*),(.*)', line)[0]
# Create a dictionary of one row
item = {header[0]: row[0], header[1]: row[1], header[2]: row[2],
header[3]: row[3]}
# Add each row to the list
data.append(item)
准备好数据后,您可以检查您的条件。
for item in data:
if all([x in item['Inventory'] for x in ['comforter', 'sheets', 'pillow']]):
item['Location'] = 'Bedding'
else:
item['Location'] = 'home-fashions'
将 output 写入文件。
import csv
with open('output.csv', 'w') as f:
dict_writer = csv.DictWriter(f, data[0].keys())
dict_writer.writeheader()
dict_writer.writerows(data)
csv.DictReader
返回一个字典,所以只需将新值分配给列:
if 'comforter' in line['Inventory'] and ...:
line['Location'] = 'Bedding'
else:
line['Location'] = 'home-fashions'
print(line['Inventory'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.