我的字符串如下:
s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"'
我想按如下方式转换为字典:
key | value -----|-------- key1 | 1234 key2 | string with space key3 | SrtingWithoutSpace
我如何在Python中执行此操作?
答案 0 :(得分:24)
shlex类使编写变得容易 用于简单语法的词法分析器 类似于Unix shell。 这通常对写作很有用 minilanguages,(例如,在奔跑中 Python应用程序的控制文件) 或者用于解析引用的字符串。
import shlex
s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"'
print dict(token.split('=') for token in shlex.split(s))
答案 1 :(得分:16)
试试这个:
>>> import re
>>> dict(re.findall(r'(\S+)=(".*?"|\S+)', s))
{'key3': '"SrtingWithoutSpace"', 'key2': '"string with space"', 'key1': '1234'}
如果您还想删除引号:
>>> {k:v.strip('"') for k,v in re.findall(r'(\S+)=(".*?"|\S+)', s)}