4 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用shlex
:
import?shlexdict(i.split(":") ?for?i?in?shlex.split(query))
輸出:
{'age':?'25',?'company':?'Big?Company,?LLC',?'name':?'Thoong'}

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用正則表達(dá)式并插入到字典中:
import re
regex_1 = r"(\w+:\w+)"
regex_2 = r"(\w+:\"\w+\s\w+,\s\w+\")"
query = 'name:Thoong company:"Big Company, LLC" age:25'
r_1 = re.findall(regex_1, query)
r_2 = re.search(regex_2, query).group(1)
d = {*r_1,
r_2}
print(d)
返回:
{'name:Thoong', 'age:25', 'company:"Big Company, LLC"'}

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
這個(gè)怎么樣?這看起來并不優(yōu)雅,但您可以輕松理解這段代碼的作用。
query = 'name:Thoong company:"Big Company, LLC" age:25'
tmp = query.split(":")
keys = []
values = []
# extract keys
for t in tmp:
_t = t.split(" ")
if len(_t) == 1:
keys.append(_t[0])
else:
values.append(" ".join(_t[:-1]))
keys.append(t.split(" ")[-1])
values.append(keys[-1])
del keys[-1]
result = {k: v for k, v in zip(keys, values)}
print(result)

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
拆分空格 ( ) 和其他符號(hào)可能不起作用,因?yàn)槊Q可能包含任意數(shù)量的字符。
如果查詢總是由這三個(gè)元素組成,您可以嘗試在關(guān)鍵字處拆分:
d = {'name': query.split('name:')[1].split(' company:')[0],
'company': query.split('company:')[1].split(' age:')[0],
'age': query.split('age:')[1]}
但是,如果查詢格式錯(cuò)誤,這將不起作用。在那里,您可能必須嘗試解析它并轉(zhuǎn)義出現(xiàn)在引號(hào)內(nèi)的空格和冒號(hào)。
添加回答
舉報(bào)