我有以下字符串,我试图将其解析为 k,v 的字典
富=“abc=foo.bazz;defg=6cab;随机=随机;令牌=foobar”
我可以用一些非常丑陋的代码来实现这一点
foo_dict = {}
bar = foo.split(';')
for item in bar:
x = item.split('=')
foo_dict[x[0]] = x[1]
我更希望这是一个简单的 1 行列表理解。
我有以下字符串,我试图将其解析为 k,v 的字典
富=“abc=foo.bazz;defg=6cab;随机=随机;令牌=foobar”
我可以用一些非常丑陋的代码来实现这一点
foo_dict = {}
bar = foo.split(';')
for item in bar:
x = item.split('=')
foo_dict[x[0]] = x[1]
我更希望这是一个简单的 1 行列表理解。
dict(part.split("=") for part in foo.split(";"))
我认为可行
>>> foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"
>>> dict(part.split("=") for part in foo.split(";"))
{' token': 'foobar', 'abc': 'foo.bazz', ' defg': '6cab', ' rando': 'random'}
>>>
如果你这样做part.strip().split("=")
,它可能会摆脱额外的空间......
>>> dict(part.strip().split("=") for part in foo.split(";"))
{'token': 'foobar', 'abc': 'foo.bazz', 'defg': '6cab', 'rando': 'random'}
In [107]: foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"
In [115]: dict(map(str.strip,x.split('=')) for x in foo.split(';'))
.....:
Out[115]: {'abc': 'foo.bazz', 'defg': '6cab', 'rando': 'random', 'token': 'foobar'}
使用urlparse模块怎么样:
In [1] import urlparse
In [2] foo = "abc=foo.bazz; defg=6cab; rando=random; token=foobar"
In [3]: urlparse.parse_qs('abc=foo.bazz; defg=6cab; rando=random; token=foobar')
Out[3]:
{' defg': ['6cab'],
' rando': ['random'],
' token': ['foobar'],
'abc': ['foo.bazz']}
In [4]: dict(urlparse.parse_qsl('abc=foo.bazz; defg=6cab; rando=random; token=foobar'))
Out[4]: {' defg': '6cab', ' rando': 'random', ' token': 'foobar', 'abc': 'foo.bazz'}
不确定您是否想要键中的那些空白值,但显然很容易清理。