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

我有一个像这样的 Python 字符串


query = 'name:Thoong company:"Big Company, LLC" age:25'

我想把它转换成一个字典,键和值由':'分割


{

    'name': 'Thoong',

    'age': 25,

    'company': 'Big Company, LLC',

}

我试图分开' '然后':'。但似乎query.split(' ')不起作用,因为我们有' ' "Big Company, LLC"


有什么办法可以存档这个,可以使用正则表达式吗?


神不在的星期二
浏览 129回答 4
4回答

精慕HU

使用shlex:import shlexdict(i.split(":")  for i in shlex.split(query))输出:{'age': '25', 'company': 'Big Company, LLC', 'name': 'Thoong'}

狐的传说

使用正则表达式并插入到字典中:import reregex_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"'}

青春有我

这个怎么样?这看起来并不优雅,但您可以轻松理解这段代码的作用。query = 'name:Thoong company:"Big Company, LLC" age:25'tmp = query.split(":")keys = []values = []# extract keysfor 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)

红糖糍粑

拆分空格 (  ) 和其他符号可能不起作用,因为名称可能包含任意数量的字符。如果查询总是由这三个元素组成,您可以尝试在关键字处拆分:d = {'name': query.split('name:')[1].split(' company:')[0],     'company': query.split('company:')[1].split(' age:')[0],     'age': query.split('age:')[1]}但是,如果查询格式错误,这将不起作用。在那里,您可能必须尝试解析它并转义出现在引号内的空格和冒号。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python