我正在尝试使用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) 等等...
答案 0 :(得分:0)
我希望我理解得对,我假设您打算读"PythonProject.csv"
并将相同的数据和 additional 列写入"new_rdlist.csv"
。
访问和处理数据
主要问题似乎是了解DictReader
和DictWriter
中的行。由于您已经在使用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')