gpt4 book ai didi

python - 解析具有已知键定界符的键值对的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:24 25 4
gpt4 key购买 nike

如果键字符串是具有明确分隔符的已知子字符串,我如何将字符串转换为字典?示例:

s = 'k1:text k2: more text k3:andk4: more yet'
key_list = ['k1','k2','k3']
(missing code)
# s_dict = {'k1':'text', 'k2':'more text', 'k3':'andk4: more yet'}

在这种情况下,键必须以空格、换行符开头,或者是字符串的第一个字符,并且必须(紧接着)跟一个冒号,否则它们不会被解析为键。因此在示例中,k1k2k3 被读取为键,而 k4 的一部分code>k3 的值。我还删除了尾随空格,但认为这是可选的。

最佳答案

您可以使用 re.findall 来执行此操作:

>>> import re
>>> dict(re.findall(r'(?:(?<=\s)|(?<=^))(\S+?):(.*?)(?=\s[^\s:]+:|$)', s))
{'k1': 'text', 'k2': ' more text', 'k3': 'andk4: more yet'}

正则表达式需要反复试验。盯着它看足够久,您就会明白它在做什么。

详情

(?:          
(?<=\s) # lookbehind for a space
| # regex OR
(?<=^) # lookbehind for start-of-line
)
(\S+?) # non-greedy match for anything that isn't a space
: # literal colon
(.*?) # non-greedy match
(?= # lookahead (this handles the third key's case)
\s # space
[^\s:]+ # anything that is not a space or colon
: # colon
|
$ # end-of-line
)

关于python - 解析具有已知键定界符的键值对的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com