How do you translate this regular-expression idiom from Perl into Python?

后端 未结 15 680
情深已故
情深已故 2020-12-04 11:16

I switched from Perl to Python about a year ago and haven\'t looked back. There is only one idiom that I\'ve ever found I can do more easily in Perl than in Python:<

15条回答
  •  盖世英雄少女心
    2020-12-04 12:00

    With thanks to this other SO question:

    import re
    
    class DataHolder:
        def __init__(self, value=None, attr_name='value'):
            self._attr_name = attr_name
            self.set(value)
        def __call__(self, value):
            return self.set(value)
        def set(self, value):
            setattr(self, self._attr_name, value)
            return value
        def get(self):
            return getattr(self, self._attr_name)
    
    string = u'test bar 123'
    save_match = DataHolder(attr_name='match')
    if save_match(re.search('foo (\d+)', string)):
        print "Foo"
        print save_match.match.group(1)
    elif save_match(re.search('bar (\d+)', string)):
        print "Bar"
        print save_match.match.group(1)
    elif save_match(re.search('baz (\d+)', string)):
        print "Baz"
        print save_match.match.group(1)
    

提交回复
热议问题