正则表达式模式检索键和值

时间:2014-05-21 13:53:19

标签: python regex

我对Python中的正则表达式有疑问。

我有|分隔的键值对,例如:

"key1: value | key2: value"

我需要帮助来使用正则表达式模式检索每对的键和值:

>>> import re
>>> value_pairs = "key1: value | key2: value"
>>> pairs = re.match('regex-pattern', value_pairs)
>>> print pairs
(key1, value)
(key2, value)

2 个答案:

答案 0 :(得分:1)

您也可以在没有正则表达式的情况下执行此操作:

>>> value_pairs = "key1: value | key2: value"
>>> dict([ex.strip() for ex in e.split(':')] for e in value_pairs.split('|'))
{'key2': 'value', 'key1': 'value'}

适用于较长的一对配对:

>>> value_pairs = "key1: value1 | key2: value 2 | key3: value3"
>>> dict([ex.strip() for ex in e.split(':')] for e in value_pairs.split('|'))
{'key3': 'value3', 'key2': 'value 2', 'key1': 'value1'}

答案 1 :(得分:0)

使用re.findall获取多个匹配项:

>>> import re
>>> s = "key1: value | key2: value"
>>> re.findall(r'([^\s|:]+):\s*([^\s|:]+)', s)
[('key1', 'value'), ('key2', 'value')]

正如您在上面的示例中所看到的,如果模式中有多个组,re.findall将返回元组列表。