解析具有已知密钥分隔符的键,值对的字符串

时间:2018-02-21 05:24:56

标签: python regex string dictionary

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

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被视为键,而k4k3的值的一部分。我也删除了尾随空格,但认为这是可选的。

1 个答案:

答案 0 :(得分:4)

您可以使用int a = 0; if (0 < a <= 10) print("1"); else if (a==0) print("2"); else if (10 < a <= 100) print("3"); else print("4"); 执行此操作:

re.findall

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

<强>详情

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