2015-03-17 4 views
0

У меня есть файл JSON, который я бы хотел преобразовать все строки даты в типы даты. Теперь мой скрипт проходит через словарь JSON и записывает эти значения в базу данных. Как мне выполнить преобразование строк в дату на весь словарь?Как выполнить функцию в словаре в Python

Мой фрагмент кода здесь, который проходит через объекты. Я хотел бы, чтобы преобразовать свой выход CreatedDate из "02/17/2015 16:53:25" в "2015-02-17 16:53:25"

Сейчас я использую CreatedDate = datetime.datetime.strptime(CreatedDate, "%m/%d/%Y %H:%M:%S") для достижения последнего выхода, как бы я выполнить это на код ниже отрезала для CreateDate

for sr in decoded2['Response']['ListOfServiceRequest']['ServiceRequest']: 
    SRAddress = sr['SRAddress'] 
    Latitude = sr['Latitude'] 
    Longitude = sr['Longitude'] 
    SRNumber = sr['SRNumber'] 
    FirstName = sr['FirstName'] 
    LastName = sr['LastName'] 
    HomePhone = sr['HomePhone'] 
    CreatedDate = sr['CreatedDate'] 
+0

Я не уверен, что у меня возникает вопрос, что не работает, когда вы положили свой вызов 'strptime' сразу после получения' CreatedDate'? (или даже на 'sr ['CreatedDate']')? –

+0

Я думаю, что ты прав, возможно, я подумал об этом. –

ответ

0

Может быть, я неправильно , но не можете ли вы просто использовать strftime, чтобы преобразовать дату в строку с требуемым форматом?

def convert_date_string(s_date_in): 
    date_in = datetime.datetime.strptime(s_date_in, "%m/%d/%Y %H:%M:%S") 
    return datetime.datetime.strftime(date_in, "%Y-%m-%d %H:%M:%S") 

for sr in decoded2['Response']['ListOfServiceRequest']['ServiceRequest']: 
    sr['CreatedDate'] = convert_date(sr['CreatedDate']) 
0

Поскольку ваша исходная структура представляет собой JSON строка, которую вы могли бы написать обычай JSONDecoder и проверить строку, чтобы убедиться в том, чтобы определить, может ли это строка даты.

В качестве альтернативы вы можете использовать object_hook kwarg и передать ему пользовательскую функцию. EG:

json_string = '{"key": "02/17/2015 16:53:25", "key2": {"nest": 1,"nest2": "blah"}}' 
import json 

def obj_hook(dct): 
    for k, v in dct.iteritems(): 
     if isinstance(v, basestring): 
      # Put your date time detection here. Also add additional type checks. 
      dct[k] = 'Replaced-- {}'.format(v) 
    return dct 

result_dict = json.loads(json_string, object_hook=obj_hook) 

print result_dict 
>>> {u'key2': {u'nest': 1, u'nest2': 'Replaced-- blah'}, u'key': 'Replaced-- 02/17/2015 16:53:25'} 

Это может быть излишним, если вы хотите изменить значение словаря на месте. Поскольку ответ xnx указывает, что вы можете с успехом изменить значение словаря в цикле.

Смежные вопросы