Python中如何修改CSV文件SendingTime列的datetime日期时间格式
CSV SendingTime列日期格式转换问题修复
错误原因
- 时间格式指令使用错误:Python datetime模块的格式化规则中不存在
%h、%s指令,对应时间单位的正确指令为:24小时制小时用%H,分钟用%M,秒用%S - 未匹配原始时间的毫秒后缀:原始数据的时间格式为
DD/MM/YYYY HH:MM:SS.DDDD,末尾带毫秒段,解析格式需要补充.%f匹配该部分,否则会出现格式不匹配报错 - 输出格式不符合需求:需求要求输出格式为
YYYYMMDD-HH:MM:SS,原代码输出格式误用了带横杠的日期写法
修复后代码
import csv import re from datetime import datetime lines = [] # 读取原CSV文件 with open('datetimeissue.csv', "r", newline='') as data: reader = csv.reader(data) for row in reader: for i, string in enumerate(row): # 匹配符合原始格式的时间字符串 if re.match(r"\d{2}\/\d{2}\/\d{4} \d{2}\:\d{2}\:\d{2}\.\d+", string.strip()): # 补充%f匹配毫秒部分,修正时间格式指令 datetimeobject = datetime.strptime(string.strip(), '%d/%m/%Y %H:%M:%S.%f') # 调整输出格式为YYYYMMDD-HH:MM:SS new_string = datetimeobject.strftime('%Y%m%d-%H:%M:%S') row[i] = new_string print("Replaced", string, "with", new_string) lines.append(row) # 写入新文件 with open('mynewoverwritten.csv', "w", newline='') as data: writer = csv.writer(data) writer.writerows(lines)
内容的提问来源于stack exchange,提问作者test1 1
相关产品推荐
相关产品推荐

