python正则表达式在第1行之后找到第1行和第1行,在第2行之后找到第2行和第2行等等

时间:2014-06-27 15:19:03

标签: python regex

抱歉,问题的措辞有点令人困惑......

基本上我有一个类似下面的文件......我需要使用正则表达式从每个块中获取名称和年份到字典

....
....
....
* name: (name1) *
* ...          *
* ...          *
* year: (year1) *
....
....
....
* name: (name2) *
* ...          *
* ...          *
* year: (year2) *
....
....
....
* name: (name3) *
* ...          *
* ...          *
* year: (year3) *

需要:

{'name1':'year1','name2':'year2','name3':'year3'}

2 个答案:

答案 0 :(得分:1)

尝试下面的regex,返回匹配的组并手动形成预期的输出。

/name:\s*\(([^)]*)\)|year:\s*\(([^)]*)\)/g

以下Online Demo来检查匹配的群组。

这个正则表达式组在(之后发现)之前的所有内容。

答案 1 :(得分:1)

您可以使用以下正则表达式。

>>> import re
>>> regex  = re.compile(r'(?s)name:\s*\((\w+)\).*?year:\s*\((\w+)\)')
>>> mydict = dict(re.findall(regex, data))

Working Demo