如何使用if语句将数据写入csv列表

时间:2019-04-24 17:47:35

标签: python

我正在尝试使用if语句(基于列表中已存在的值)将数据写入csv到新的字段/列。我有一个UID列表(字段名称类):     ACRW,     AOC,     IFSE,     LN,     RLW,     等等,

这是我到目前为止所拥有的:

import csv
with open('PythonProject.csv', 'r') as rd_list:
    csv_reader = csv.reader(rd_list)
    with open ('new_rdlist.csv', 'w', newline='') as new_csvfile:
        fieldnames = ['Class', 'Description', 'Flex']
        csv_writer = csv.DictWriter (new_csvfile, fieldnames=fieldnames)
        csv_writer.writeheader()
        csv_writer = csv.writer(new_csvfile)
        Class = ''
        for row in csv_reader:
            if Class == 'C':
                value = 'Cable'
            elif Class == 'W':
                value = 'Wave'
            elif Class == 'RT':
                value = 'Therm'
            elif Class == 'H':
                value = 'Heat'
            else:
                value = 'Unit'
            csv_writer.writerow(row)            
input('\nNew List is in your directory, Press Enter to exit')

预期结果是要填充csv,     类,说明,Flex(这是新字段)     (ACRW,唯一名称,单位)     (AOC,唯一名称,单位)     (C,唯一名称,电缆)     (IFSE,唯一名称,单位)     (LN,唯一名称,单位)     (RLW,唯一名称,单位)     (W,唯一名称,Wave)     等等...

1 个答案:

答案 0 :(得分:0)

我希望我理解得对,我假设您打算读"PythonProject.csv"并将相同的数据和 additional 列写入"new_rdlist.csv"

访问和处理数据

主要问题似乎是了解DictReaderDictWriter中的行。由于您已经在使用DictWriter,因此建议您也使用DictReader类。每行中的单元格/字段都可以通过其列名进行访问。您可以通过这种方式访问​​“类”值,因此第一项检查将显示为:

if row["Class"] == "C":
  value = "Cable"

您甚至可以直接操作行字典:

if row["Class"] == "C":
  row["Flex"] = "Cable"

修改后,其余的应该很容易解决!

其他问题

csv_writer = csv.writer(new_csvfile)是多余的,因为它再次覆盖了csv_writer变量

(几乎)最终代码

import csv
with open('PythonProject.csv', 'r') as rd_list:
    csv_reader = csv.DictReader(rd_list)
    with open ('new_rdlist.csv', 'w', newline='') as new_csvfile:
        fieldnames = ['Class', 'Description', 'Flex']
        csv_writer = csv.DictWriter (new_csvfile, fieldnames=fieldnames)
        csv_writer.writeheader()
        for row in csv_reader:
            if row["Class"] == "C":
                row["Flex"] = "Cable"
            ...
                row["Flex"] = "Unit"
            csv_writer.writerow(row)            
input('\nNew List is in your directory, Press Enter to exit')