2017-01-06 3 views
-1

У меня есть список с несколькими словарей, как в следующем:Изменение даты в списке с несколькими словарями Python

[{'Date': '6-1-2017', 'Rate':'0.3', 'Type':'A'}, 
{'Date': '6-1-2017', 'Rate':'0.4', 'Type':'B'}, 
{'Date': '6-1-2017', 'Rate':'0.6', 'Type':'F'}, 
{'Date': '6-1-2017', 'Rate':'0.1', 'Type':'B'} 
] 

сейчас я хотел бы изменить даты, потому что они должны быть в формате «yyymmdd ', который начинается с 1900-01-01. Другими словами, я хотел бы изменить «6-1-2017» на «1170106».

Поскольку это нужно делать каждую неделю (с текущей текущей датой), я не хочу менять это вручную. Поэтому на следующей неделе «13 -1-2017» необходимо преобразовать в «1170113».

Все идеи, как это сделать? Я пробовал несколько вещей, но я не могу даже заставить свой код выбирать значения даты для всех словарей.

Большое спасибо!

+0

показать, что вы попытались, и как это получилось коротким. –

+2

'1170106' отличается от' yyyy-mm-dd'. – MattDMo

+0

что даже мы '1170106'? – WhatsThePoint

ответ

1

Вы можете использовать модуль datetime, который обеспечивает много функциональных возможностей для манипулирования объектами даты-времени, включая преобразования DateTime в строку и пути назад, доступ к различным компонентам объекта даты и времени и т.д.:

from datetime import datetime 

for l in lst: 
    l['Date'] = datetime.strptime(l['Date'], "%d-%m-%Y") 
    l['Date'] = str(l['Date'].year - 1900) + l['Date'].strftime("%m%d") 

lst 
#[{'Date': '1170106', 'Rate': '0.3', 'Type': 'A'}, 
# {'Date': '1170106', 'Rate': '0.4', 'Type': 'B'}, 
# {'Date': '1170106', 'Rate': '0.6', 'Type': 'F'}, 
# {'Date': '1170106', 'Rate': '0.1', 'Type': 'B'}] 
Смежные вопросы