Creando un diccionario a partir de espacios separados = cadena de valor en Python

Tengo la siguiente cuerda:

s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"' 

Quiero convertir en un diccionario de la siguiente manera:

 llave |  valor
 ----- | --------  
 key1 |  1234
 key2 |  cadena con espacio
 key3 |  SrtingWithoutSpace

¿Cómo hago esto en Python?

Prueba esto:

 >>> import re >>> dict(re.findall(r'(\S+)=(".*?"|\S+)', s)) {'key3': '"SrtingWithoutSpace"', 'key2': '"string with space"', 'key1': '1234'} 

Si también quieres quitar las comillas:

 >>> {k:v.strip('"') for k,v in re.findall(r'(\S+)=(".*?"|\S+)', s)} 

La clase shlex facilita la escritura de analizadores léxicos para syntax simples que se asemejan a las del shell de Unix. A menudo, esto será útil para escribir minilenguaje (por ejemplo, en archivos de control de ejecución para aplicaciones Python) o para analizar cadenas citadas.

 import shlex s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"' print dict(token.split('=') for token in shlex.split(s))