如何在Python csv模块处理中将日期列转为整数元组
解决CSV日期列转整数元组的问题
直接修改types列表中对应日期列的转换函数即可,完全保留你原来的代码结构:
import csv file = open('csvfile.csv') lines = csv.reader(file) header = next(lines) # ['name', 'price', 'date'] # 为各列指定转换类型,日期列用lambda函数实现转整数元组 types = [ str, float, lambda x: tuple(map(int, x.split('/'))) # 替换原有的str,完成日期格式转换 ] # 原有字典列表生成逻辑完全不变 alist_of_dicts = [ { name: func(val) for name, func, val in zip(header, types, line) } for line in lines ]
原理说明
原来的types列表中,第三个元素是str,现在替换成的lambda函数会:
- 把日期字符串按
/分割成字符串列表(比如'2/23/2023'变成['2','23','2023']) - 用
map(int, ...)将每个字符串元素转为整数 - 最后用
tuple()将整数序列打包成元组,得到你需要的(2,23,2023)格式
可选:更健壮的异常处理
如果需要处理格式错误的日期(比如分隔符不是/、内容不是数字),可以把lambda换成具名函数:
def convert_date(x): try: return tuple(map(int, x.split('/'))) except ValueError: # 这里可以根据需求返回默认值或抛出异常 return (0, 0, 0) types = [ str, float, convert_date ]
内容的提问来源于stack exchange,提问作者capnhud
相关产品推荐
相关产品推荐

