我想使用 Python 在特定字符串之后提取 MediaWiki 标记格式的内容。例如,2012 年美国总统大选文章,包含名为“nominee1”和“nominee2”的字段。玩具示例:
In [1]: markup = get_wikipedia_markup('United States presidential election, 2012')
In [2]: markup
Out[2]:
u"{{
| nominee1 = '''[[Barack Obama]]'''\n
| party1 = Democratic Party (United States)\n
| home_state1 = [[Illinois]]\n
| running_mate1 = '''[[Joe Biden]]'''\n
| nominee2 = [[Mitt Romney]]\n
| party2 = Republican Party (United States)\n
| home_state2 = [[Massachusetts]]\n
| running_mate2 = [[Paul Ryan]]\n
}}"
以上面的选举文章为例,我想提取紧跟“nomineeN”字段但在调用下一个字段之前存在的信息(由点“|”划分)。因此,给定上面的例子,理想情况下我想提取“Barack Obama”和“Mitt Romney”——或者至少是它们嵌入的语法('''[[Barack Obama]]''' and [ [米特·罗姆尼]])。其他正则表达式已经从 wikimarkup 中提取了链接,但是我(失败的)尝试使用积极的后向断言的方式有点像:
nominees = re.findall(r'(?<=\|nominee\d\=)\S+',markup)
我的想法是它应该找到像 "|nominee1=" 和 "|nominee2=" 这样的字符串,在 "|"、"nominee"、"=" 之间可能有一些空格,然后返回它后面的内容,比如 "Barack Obama" 和 "米特·罗姆尼”。