Python如何分割值有些是用空格

2024-05-16 08:59:06 发布

您现在位置:Python中文网/ 问答频道 /正文

需要帮助拆分下面的句子并将其转换为字典键值吗

[score=2 last=19 delay=5 distance=10k 2 events name=Denis John P place=New York]

dict结果应为:

"Event": {
 "score": "2",
  "last": "19",
  "delay": "5",
  "distance": "10k 2 events",
  "name": "Denis John",
  "place": "New York",
 }

我无法找出解决方案,尝试了很多re,但未能使用分隔符“=”分割something=something,somthing=something space something

谢谢你的帮助!你知道吗


Tags: namenew字典placeeventsjohnsomething句子
2条回答

这应该可以做到:

s = '[score=2 last=19 delay=5 distance=10k 2 events name=Denis John P place=New York]'
l = s[1:-1].split('=')
data = {}
while len(l) > 0:
    val = l.pop()
    if len(l) > 1:
        head,key = l.pop().rsplit (maxsplit=1)
        l.append (head)
    else:
        key = l.pop()
    data[key] = val

from pprint import pprint
pprint (data)

输出:

{'delay': '5',
 'distance': '10k 2 events',
 'last': '19',
 'name': 'Denis John P',
 'place': 'New York',
 'score': '2'}

这个解决方案并不完美。它要求每个值以一个空格结束,并将其丢弃。我解决这个问题的方法是在字符串的末尾加一个空格,然后去掉每个值。你知道吗

import re
s = "score=2 last=19 delay=5 distance=10k 2 events name=Denis John P place=New York"
s = s + ' ' 
res = re.findall(r"([^\s]+)=([^=]+)\s", s)
res = [(a, b.strip()) for (a,b) in res]
d = {"Events": dict(res)}

相关问题 更多 >