我对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)
答案 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
将返回元组列表。