Reputation: 159
I have a question regarding regex in Python.
I have key-value pairs separated by |
such as this:
"key1: value | key2: value"
I need help to retrieve the keys and the values for each pairs using regex patterns:
>>> import re
>>> value_pairs = "key1: value | key2: value"
>>> pairs = re.match('regex-pattern', value_pairs)
>>> print pairs
(key1, value)
(key2, value)
Upvotes: 0
Views: 1118
Reputation: 104032
You can also do this without a regex:
>>> value_pairs = "key1: value | key2: value"
>>> dict([ex.strip() for ex in e.split(':')] for e in value_pairs.split('|'))
{'key2': 'value', 'key1': 'value'}
Which works for a longer groups of pairs as well:
>>> 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'}
Upvotes: 1
Reputation: 369304
Use re.findall
to get multiple matches:
>>> import re
>>> s = "key1: value | key2: value"
>>> re.findall(r'([^\s|:]+):\s*([^\s|:]+)', s)
[('key1', 'value'), ('key2', 'value')]
As you can see in the above example, re.findall
returns a list of tuples if there are multiple groups in the pattern.
Upvotes: 0