【问题标题】:Convert CSV column format from string to datetime将 CSV 列格式从字符串转换为日期时间
【发布时间】:2015-08-22 14:01:36
【问题描述】:
Python 3.4 ...我正在尝试将 CSV 中的特定列从字符串转换为日期时间并将其写入文件。我能够读取和转换它,但需要帮助将日期格式更改写入文件(最后一行代码 - 需要修改)。最后一行代码出现以下错误错误:预期序列。
import csv
import datetime
with open ('/path/test.date.conversion.csv') as csvfile:
readablefile = csv.reader(csvfile)
writablefile = csv.writer(csvfile)
for row in readablefile:
date_format = datetime.datetime.strptime(row[13], '%m/%d/%Y')
writablefile.writerow(date_format)
【问题讨论】:
标签:
csv
datetime
python-3.x
【解决方案1】:
所以 date_format 是 datetime 类的一个实例。您需要格式化字符串以打印到文件。您可以使用标准:
date_format.isoformat()
或自定义您自己的格式:
date_format.strftime('%Y-%m-%d %H:%M:%S')
还有几件事需要注意。你不能像那样写入你正在读取的同一个文件。如果要覆盖该文件,请创建一个 tmp 文件,然后在完成后替换它,但最好只创建另一个文件。恕我直言,最好的解决方案是像这样充分利用标准输入和标准输出:
import csv
import sys
from datetime import datetime
FIELD = 13
FMT = '%m/%d/%Y'
readablefile = csv.reader(sys.stdin)
writablefile = csv.writer(sys.stdout)
for row in readablefile:
dt = datetime.strptime(row[FIELD], FMT)
row[FIELD] = dt.isoformat()
writablefile.writerow(row)
现在你可以像这样调用脚本了:
cat /path/test.date.conversion.csv | python fixdate.py > another_file.csv
此时,您可以利用 argparse 模块为您的脚本提供各种不错的参数,例如: