嵌套循环不会将字符串转换为datetime.date日期中途反对或退出

2024-03-28 08:57:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为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的确切格式。我不想要一个日期时间。日期时间格式和我是肯定的当前格式是字符串格式。使用以下嵌套循环时:

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:strTime()参数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'>   

你知道我该怎么解决这个问题吗?我原来的字典里有两万条。你知道吗


Tags: key字符串infordatetimedate字典格式
2条回答

您的代码应为:

for record in measures:
    record['date']=datetime.strptime(record['date'],'%Y-%m-%d').date()
    print(type(record['date']))

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}]

相关问题 更多 >