繁体   English   中英

python csv 文件添加到基于另一个字段的字段

[英]python csv file add to field based off another field

我有一个 csv 文件如下所示:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM