import re
rx = r'(\w+)\s+("[^"]*"|[^\s;]+)'
s = 'cheese "stilton";pigeons 17; color "blue"; why "because I said so";'
result = {}
for key,val in re.findall(rx, s):
if val.startswith('"') and val.endswith('"'):
val = val[1:-1]
result[key]=val
print(result)
aW1wb3J0IHJlCnJ4ID0gcicoXHcrKVxzKygiW14iXSoifFteXHM7XSspJwpzID0gJ2NoZWVzZSAic3RpbHRvbiI7cGlnZW9ucyAxNzsgY29sb3IgImJsdWUiOyB3aHkgImJlY2F1c2UgSSBzYWlkIHNvIjsnCnJlc3VsdCA9IHt9CmZvciBrZXksdmFsIGluIHJlLmZpbmRhbGwocngsIHMpOgoJaWYgdmFsLnN0YXJ0c3dpdGgoJyInKSBhbmQgdmFsLmVuZHN3aXRoKCciJyk6CgkJdmFsID0gdmFsWzE6LTFdCglyZXN1bHRba2V5XT12YWwKCQpwcmludChyZXN1bHQpCgo=