我是Python新手,我浏览了CSV文档,并查看了一些堆栈溢出示例,但似乎无法正确理解。我有一个CSV文件,其中包含如下数据:
IDCJAC0010,66062,2019,01,01,31.6,1,Y
索引[2:5]是日期的元素,因此我希望合并这些列,并在年-月-日之间使用“-”,这样我就可以使用新创建的CSV创建带有matplotlib的绘图。需要明确的是,新CSV文件中所需的输出为:
IDCJAC0010,66062,2019-01-01,31.6,1,Y
到目前为止,我的代码是:
with open(file_in, newline='') as f_in, open(file_out, 'w') as f_out:
reader = csv.reader(f_in, delimiter=',')
new_row = []
for row in reader:
new_row.append(row[0: 2])
amended_row = '-'.join(row[2:5])
new_row.append(amended_row)
new_row.append(row[5:])
我得到的结果是:
['IDCJAC0010', '66062'], '2019-01-05', ['37.8', '1', 'Y']
您需要使用
new_row.extend(row[0: 2])
和new_row.append(row[5:])
来避免列表中包含列表您正在混合字符串和列表
row[0: 2]
返回第一行的字符串列表。 但是'-'.join(row[2:5])
结果是普通字符串'2019-01-05'
有不同的方法解决这个问题。一种方法是,当您想要添加部分列表中的所有元素时,使用
new_row.extend(row[0:2])
我通常做的是,我坚持使用
+=
操作符来扩展我的列表。如果希望代码的外观也保持一致,请将字符串'-'.join(row[2:5])
包装在如下列表中:['-'.join(row[2:5])]
相关问题 更多 >
编程相关推荐