python将字符串拆分成多个分隔符并放入字典

时间:2018-06-04 15:24:17

标签: python

我有以下字符串,我试图拆分成具有特定名称的字典。

string1 = "fdsfsf:?x=klink:apple&nn=specialtime&tr=instruction1&tr=instruction2&tr=instruction3"

我希望获得的是:

>>> print(dict)

{'namy_names': 'specialtime', 'tracks': ['instruction1', 'instruction2', 'instruction3']}

我对使用词典非常陌生,所以不太确定它应该如何结果。

我尝试过以下代码,但它只提供instruction1而不是instructions的完整列表

delimiters = ['&nn', '&tr']

values = re.split('|'.join(delimiters), string1)
values.pop(0)  # remove the initial empty string
keys = re.findall('|'.join(delimiters), string1)
output = dict(zip(keys, values))

print(output)

2 个答案:

答案 0 :(得分:3)

使用url-parsing。

from urllib import parse

url = "fdsfsf:?x=klink:apple&nn=specialtime&tr=instruction1&tr=instruction2&tr=instruction3"
d = parse.parse_qs(parse.urlparse(url).query)

print(d)

返回:

{'nn': ['specialtime'],
 'tr': ['instruction1', 'instruction2', 'instruction3'],
 'x': ['klink:apple']}

从这一点来说,如果有必要......,你只需要重命名并选择你的变量。像这样:

d = {
    'namy_names':d.get('nn',['Empty'])[0],
    'tracks':d.get('tr',[])
}

# {'namy_names': 'specialtime', 'tracks': ['instruction1', 'instruction2', 'instruction3']}

答案 1 :(得分:2)

这看起来像网址编码数据,因此您可以/应该使用urllib.parse.parse_qs

import urllib.parse

string1 = "fdsfsf:?x=klink:apple&nn=specialtime&tr=instruction1&tr=instruction2&tr=instruction3"

dic = urllib.parse.parse_qs(string1)
dic = {'namy_names': dic['nn'][0],
       'tracks': dic['tr']}
# result: {'namy_names': 'specialtime',
#          'tracks': ['instruction1', 'instruction2', 'instruction3']}