为了账号安全,请及时绑定邮箱和手机立即绑定

使用空格分隔符将字符串拆分为字典

使用空格分隔符将字符串拆分为字典

神不在的星期二 2023-05-16 15:53:53
我有一个像这样的 Python 字符串query = 'name:Thoong company:"Big Company, LLC" age:25'我想把它转换成一个字典,键和值由':'分割{    'name': 'Thoong',    'age': 25,    'company': 'Big Company, LLC',}我试图分开' '然后':'。但似乎query.split(' ')不起作用,因为我们有' ' "Big Company, LLC"有什么办法可以存档这个,可以使用正则表达式吗?
查看完整描述

4 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

使用shlex

import shlexdict(i.split(":")
 for i in shlex.split(query))

输出:

{'age': '25', 'company': 'Big Company, LLC', 'name': 'Thoong'}


查看完整回答
反对 回复 2023-05-16
?
狐的传说

TA贡献1804条经验 获得超3个赞

使用正则表达式并插入到字典中:


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"'}


查看完整回答
反对 回复 2023-05-16
?
青春有我

TA贡献1784条经验 获得超8个赞

这个怎么样?这看起来并不优雅,但您可以轻松理解这段代码的作用。


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)


查看完整回答
反对 回复 2023-05-16
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

拆分空格 (  ) 和其他符号可能不起作用,因为名称可能包含任意数量的字符。


如果查询总是由这三个元素组成,您可以尝试在关键字处拆分:


d = {'name': query.split('name:')[1].split(' company:')[0],

     'company': query.split('company:')[1].split(' age:')[0],

     'age': query.split('age:')[1]}

但是,如果查询格式错误,这将不起作用。在那里,您可能必须尝试解析它并转义出现在引号内的空格和冒号。


查看完整回答
反对 回复 2023-05-16
  • 4 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信