Question about regular expression

gal kauffman gal.kauffman at gmail.com
Thu Oct 1 04:48:03 EDT 2015


items = s.replace(' (', '(').replace(', ',',').split()

items_dict = dict()
for item in items:
    if '(' not in item:
        item += '(0,0)'
    if ',' not in item:
        item = item.replace(')', ',0)')

    name, raw_data = item.split('(')
    data_tuple = tuple((int(v) for v in
raw_data.replace(')','').split(',')))

    items_dict[name] = data_tuple

2015-09-30 20:58 GMT-07:00 Emile van Sebille <emile at fenx.com>:

> On 9/30/2015 12:20 PM, Tim Chase wrote:
>
>> On 2015-09-30 11:34, massi_srb at msn.com wrote:
>>
> <snip>
>
>> I guess this problem can be tackled with regular expressions, b
>>>
>> ... However, if you *want* to do it with
>>
>> regular expressions, you can.  It's ugly and might be fragile, but
>>
>> #############################################################
>> import re
>> s = "name1 name2(1) name3 name4 (1, 4) name5(2) ..."
>> r = re.compile(r"""
>>      \b       # start at a word boundary
>>      (\w+)    # capture the word
>>      \s*      # optional whitespace
>>      (?:      # start an optional grouping for things in the parens
>>       \(      # a literal open-paren
>>        \s*    # optional whitespace
>>        (\d+)  # capture the number in those parens
>>        (?:    # start a second optional grouping for the stuff after a
>> comma
>>         \s*   # optional whitespace
>>         ,     # a literal comma
>>         \s*   # optional whitespace
>>         (\d+) # the second number
>>        )?     # make the command and following number optional
>>       \)      # a literal close-paren
>>      )?       # make that stuff in parens optional
>>      """, re.X)
>> d = {}
>> for m in r.finditer(s):
>>      a, b, c  = m.groups()
>>      d[a] = (int(b or 0), int(c or 0))
>>
>> from pprint import pprint
>> pprint(d)
>> #############################################################
>>
>
> :)
>
>
>> I'd stick with the commented version of the regexp if you were to use
>> this anywhere so that others can follow what you're doing.
>>
>
> ... and this is why I use python.  That looks too much like a hex sector
> disk dump rot /x20.  :)
>
> No-really-that's-sick-ly yr's,
>
> Emile
>
>
>
>
> --
> <https://mail.python.org/mailman/listinfo/python-list>
> https://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20151001/bac8f583/attachment.html>


More information about the Python-list mailing list