tengo que tomar una cabecera de la siguiente manera:analizar un encabezado de solicitud HTTP Authorization con Python
Authorization: Digest qop="chap",
realm="[email protected]",
username="Foobear",
response="6629fae49393a05397450978507c4ef1",
cnonce="5ccc069c403ebaf9f0171e9517f40e41"
Y analizar en esta usando Python:
{'protocol':'Digest',
'qop':'chap',
'realm':'[email protected]',
'username':'Foobear',
'response':'6629fae49393a05397450978507c4ef1',
'cnonce':'5ccc069c403ebaf9f0171e9517f40e41'}
¿Hay una biblioteca para hacer esto, o algo que podría mirar en busca de inspiración?
que esté haciendo esto en Google App Engine, y no estoy seguro de si la biblioteca Pyparsing está disponible, pero tal vez podría incluirlo en mi aplicación si es la mejor solución.
Actualmente estoy creando mi propio objeto MyHeaderParser y usarlo con reduce() en la cadena de encabezado. Está funcionando, pero es muy frágil.
brillante solución de Nadia a continuación:
import re
reg = re.compile('(\w+)[=] ?"?(\w+)"?')
s = """Digest
realm="stackoverflow.com", username="kixx"
"""
print str(dict(reg.findall(s)))
Hasta ahora, esto solución ha s probado solo para ser súper limpio, pero también muy robusto. Si bien no es la implementación más "por libro" del RFC, aún no he creado un caso de prueba que devuelva valores no válidos. Sin embargo, estoy _only_ usando esto para analizar el encabezado Authorization, no necesito analizar los otros encabezados que me interesan, por lo que esta puede no ser una buena solución como un analizador de encabezado HTTP general. –