Conversión de cadena con desplazamiento UTC a un objeto de fecha y hora

Dada esta cadena: "Fri, 09 Apr 2010 14:10:50 +0000" ¿cómo se convierte uno en un objeto de datetime y datetime ?

Después de leer un poco siento que esto debería funcionar, pero no …

 >>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50 +0000' >>> fmt = '%a, %d %b %Y %H:%M:%S %z' >>> datetime.strptime(str, fmt) Traceback (most recent call last): File "", line 1, in  File "/usr/lib64/python2.6/_strptime.py", line 317, in _strptime (bad_directive, format)) ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z' 

Cabe señalar que esto funciona sin problemas:

 >>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50' >>> fmt = '%a, %d %b %Y %H:%M:%S' >>> datetime.strptime(str, fmt) datetime.datetime(2010, 4, 9, 14, 10, 50) 

Pero estoy atascado con "Fri, 09 Apr 2010 14:10:50 +0000" . Preferiría convertir exactamente eso sin cambiarlo (ni cortarlo) de ninguna manera.

Parece que strptime no siempre soporta %z . Python parece que solo llama a la función C, y strptime no admite %z en tu plataforma.

Nota: a partir de Python 3.2 siempre funcionará.