Juli
Juli

Reputation: 159

Regex pattern to retrieve key and value

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

Answers (2)

dawg
dawg

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

falsetru
falsetru

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

Related Questions