我正在尝试将标头从一个Python文件复制到另一个文件,并将标头拆分为单个字符,一个字符用于一列。我不确定为什么。
我已经阅读了StackOverflow,但是找不到针对此问题的问题/解决方案。
first.csv文件数据
Date,Data
1/2/2019,a
12/1/2018,b
11/3/2018,c
Python代码
import csv
from datetime import datetime, timedelta
date_ = datetime.strftime(datetime.now(),'%Y_%m_%d')
with open('first.csv', 'r') as full_file, open('second.csv' + '_' + date_ + '.csv', 'w') as past_10_days:
writer = csv.writer(past_10_days)
writer.writerow(next(full_file)) #copy headers over from original file
for row in csv.reader(full_file): #run through remaining rows
if datetime.strptime(row[0],'%m/%d/%Y') > datetime.now() - timedelta(days=10): #write rows where timestamp is greater than today - 10
writer.writerow(row)
我得到的结果:
D,a,t,e,D,a,t,a
1/2/2019,a
我希望结果只是
Date,Data
1/2/2019,a
我只是错过了设置选项吗?这是Python 3 +
谢谢!
答案 0 :(得分:1)
更改
writer.writerow(next(full_file))
收件人
writer.writerow(next(csv.reader(full_file)))
您的代码将full_file
作为文本文件而不是CSV进行读取,因此您只需获取字符即可。
理想地,正如roganjosh指出的那样,您只需定义一次阅读器,因此代码应如下所示:
reader = csv.reader(full_file)
writer.writerow(next(reader))
for row in reader:
if datetime.strptime(row[0],'%m/%d/%Y') > datetime.now() - timedelta(days=10):
writer.writerow(row)