我有一个称为measures的词典列表,其中每个词典都包含带有字符串格式日期值的日期键:
measures =
[{'date': '2010-01-01', 'prcp': 0.15142857142857144, 'tobs':
69.71428571428571}, {'date': '2010-01-02', 'prcp': 0.002857142857142857,
'tobs': 67.0}, {'date': '2010-01-03', 'prcp': 0.0, 'tobs': 74.0}, {'date':
'2010-01-04', 'prcp': 0.0014285714285714286, 'tobs': 75.0}, {'date': '2010-
01-05', 'prcp': 0.005, 'tobs': 74.5}]
我想将日期字符串转换为datetime.date对象,因为我需要sqlalchemy的确切格式。我不希望使用datetime.datetime格式,但我肯定当前的格式是字符串格式。当我使用以下嵌套循环时:
for record in measures:
for key, val in record.items():
record['date']=datetime.strptime(record['date'],'%Y-%m-%d').date()
print(type(record['date']))
我收到错误:TypeError:strptime()参数1必须是str,而不是datetime.date 但是注释掉转换代码并在运行转换后检查每个日期记录的类型,我发现有4条记录被转换为datetime.date,但此后退出:
for record in measures:
for key, val in record.items():
##record['date']=datetime.strptime(record['date'],'%Y-%m-%d').date()
print(type(record['date']))
Output:
<class 'datetime.date'>
<class 'datetime.date'>
<class 'datetime.date'>
<class 'str'>
<class 'str'>
有什么主意我可以解决这个问题吗?我的原始字典中有20000个项目。
答案 0 :(得分:2)
您的代码应为:
for record in measures:
record['date']=datetime.strptime(record['date'],'%Y-%m-%d').date()
print(type(record['date']))
答案 1 :(得分:2)
IIUC,您也可以使用dateutil.parser
from dateutil import parser
for item in measures:
item['date'] = parser.parse(item['date']).date( )
[{'date': datetime.date(2010, 1, 1),
'prcp': 0.15142857142857144,
'tobs': 69.71428571428571},
{'date': datetime.date(2010, 1, 2),
'prcp': 0.002857142857142857,
'tobs': 67.0},
{'date': datetime.date(2010, 1, 3),
'prcp': 0.0,
'tobs': 74.0},
{'date': datetime.date(2010, 1, 4),
'prcp': 0.0014285714285714286,
'tobs': 75.0},
{'date': datetime.date(2010, 1, 5),
'prcp': 0.005,
'tobs': 74.5}]