Python: cómo manejar las marcas de tiempo (ISO8601)

Tengo que lidiar en python con cuerdas que representaniso8601 marcas de tiempo.

Mi cadena de marcas de tiempo están por lo tanto en la siguiente forma:

timestamp = "2011-08-18T10:29:47+03:00"

Actualmente los estoy convirtiendo en python usando:

timestamp = timestamp[:-6]
timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S")

Pero de esta manera pierdo toda la información sobre la zona horaria. He visto muchos ejemplos aquí en s-o sobre marcas de tiempo y python, desafortunadamente nadie estaba preservando la zona horaria también, o simplemente recupera el retraso de la zona horaria usando:

delay = timestamp[-6:]

También he intentado:

timestamp = "2011-08-18T10:29:47+03:00"
timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S%z")

pero volvió

ValueError: 'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S%z'

¿Puedes dar una idea?

Respuestas a la pregunta(2)

Su respuesta a la pregunta