我想使用Python提取MediaWiki标记中格式化的内容,并将其置于特定字符串之后。例如,2012 U.S. presidential election article,包含名为“nomined1”和“nomined2”的字段。玩具示例:
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
}}"
以上面的选举文章为例,我想提取紧跟在“nomineden”字段后面但在调用下一个字段(用pip“|”分隔)之前存在的信息。因此,在上面的例子中,我希望提取出“Barack Obama”和“Mitt Romney”—或者至少是它们嵌入的语法('[[Barack Obama]]''和[[Mitt Romney]])。其他regex有extracted links from the wikimarkup,但我(失败)尝试使用positive lookbehind assertion有点像:
^{pr2}$我的想法是,它应该找到像“| nominate1=”和“| nomined2=”这样的字符串,在“|”、“nominate”、“=”之间可能有一些空格,然后返回后面的内容,如“Barack Obama”和“Mitt Romney”。在
对于这样的infobox数据,最好使用DBpedia。他们为你做了所有的提取工作:)
http://wiki.dbpedia.org/Downloads38
请参阅“本体信息框属性”文件。你不必成为本体论专家。只需使用简单的tsv解析器就可以找到您需要的信息!在
使用mwparserfromhell!它压缩了代码,对于捕获结果更可靠。对于本例的用法:
很简单的事情来捕捉结果。在
在这里,从lookings中提取的字符串应该更容易使用。(事实上,lookbehind在这里不能与Python的正则表达式引擎一起工作,因为可选的空格使表达式的宽度可变。)
试试这个正则表达式:
结果:
^{pr2}$相关问题 更多 >
编程相关推荐