¿Cómo analizar la cadena Jetime datetime en python?

Desde python estoy haciendo una llamada a una API remota que devuelve datos en formato JSON. Luego analizo los datos utilizando el módulo json con json.loads (). El problema que tengo es con las fechas: el sistema al que estoy llamando devuelve la fecha con el siguiente formato:

/Date(1354011247940+0000)/ 

el cual json.parse simplemente analiza como una cadena. ¿Cómo puedo convertir esto en un objeto de fecha y hora de python?

Edición: a diferencia del objeto Convertir JSON a Python: ¿cómo manejar la conversión de DateTime? , No tengo control sobre los datos que se envían, por lo que no puedo simplemente cambiar el formato antes de la serialización.

Debe obtener la marca de tiempo de Unix con una expresión regular desde esta fecha, luego usar el módulo datetime para convertirlo a un formato legible:

 >m = re.search(r"Date\((\d+)\+", 'Date(1354011247940+0000)') >print(datetime.datetime.fromtimestamp(int(m.group(1))/1000.0).strftime('%Y-%m-%d %H:%M:%S')) 2012-11-27 12:14:07 

UPD: tenga en cuenta que también tiene milisegundos en esta fecha, serán truncados por este código

¿Has marcado Convertir JSON a objeto de Python: cómo manejar la conversión de DateTime? ?

Esto se ve muy similar, y es una forma alternativa a lo que se ofrece a través de la luna, aunque creo que ha proporcionado un enfoque más “pythonico” que el que se proporciona en el otro hilo similar (IMO)

No pude agregar esto a los comentarios de la respuesta de Moonsly (sin repeticiones), así que hice una respuesta por separado. Solo quería agregar algunas cosas que otros puedan encontrar útiles. Tuve este mismo problema pero las fechas de json aparecían en mis datos de forma un poco diferente (es decir, sin signo +):

 /Date(1416458650000)/ 

Hay 9 o 13 cadenas de caracteres. Las 9 cadenas de caracteres no necesitan dividirse por 1000.0. Tampoco usé expresiones regulares para extraer la cadena de tiempo.

 MILLISECONDS = '/Date(1416458650000)/'.split('(')[1][:-2] print datetime.datetime.fromtimestamp(int(MILLISECONDS)/1000.0).strftime('%Y-%m-%d %H:%M:%S') 2014-11-20 15:44:10 

Tambien puedo hacer

 SECONDS = '/Date(1416458650000)/'.split('(')[1][:-5] print datetime.datetime.fromtimestamp(float(SECONDS)).strftime('%Y-%m-%d %H:%M:%S') 2014-11-20 15:44:10