python 正则匹配文本并返回字典列表

今天有遇到要匹配网页的table元素里面的内容,部分内容为


    60
    leeliao
    leeliao
    ¥56.82 元
    ¥56.82元
    2014-08-11 23:33:54
    手动
    
61 luo321654 luo321654 ¥4,000.00 元 ¥4,000.00元 2014-08-11 23:34:32 手动

我想要匹配每一个里面的头两个,用python的正则加findall函数便可实现。但是要想获取类似字典一样的匹配(即可以通过group('key')类似的形式获取值得话),我需要对正则进行进一步改造。

我写的正则为

r'''(?P\d+).*?(?P\w+)

(?P...)的形式是用命名的形式分组,可以生成对应name的字典

实现功能的全部代码是


r = re.compile(r'''(?P\d+).*?(?P\w+)


得到的最终结果

[{'number': '60', 'name': 'leeliao'}, {'number': '61', 'name': 'luo321654'}]

这里的groupdict是返回匹配到的所有命名子组的字典,至于为什么不用findall呢,这是因为findall最后返回的是匹配到的字符元组,类似

[('60',  'leeliao'), ( '61',  'luo321654')]
而finditer返回一个正则匹配的一个对象。

具体可以参考http://stackoverflow.com/questions/3765024/different-behavior-between-re-finditer-and-re-findall


正则是一个强大的工具,需要我慢慢摸索学习,以此文记录学习的过程。

有错漏之处,欢迎指正。


参考文章:

http://junlee.blog.51cto.com/228061/555895

http://stackoverflow.com/questions/11103856/re-findall-which-returns-a-dict-of-named-capturing-groups

https://docs.python.org/2/library/re.html














你可能感兴趣的:(python,python,正则)