Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式解析Wikipedia链接_Python_Regex - Fatal编程技术网

Python 使用正则表达式解析Wikipedia链接

Python 使用正则表达式解析Wikipedia链接,python,regex,Python,Regex,我试图从维基百科的文章中提取语言列表:按类型列出编程语言列表。有几行: [[Ada(编程语言)| Ada]](多用途语言) [[Afnix(编程语言)| Afnix]]–自动保护对数据的并发访问(以前称为“Aleph”,但与“Alef”无关) [[Cilk]]–一种并发[[C(编程语言)| C]] 除了包含多个[[]]块的行(示例中包含Click language的行)之外,几乎所有行的解析都是正确的。解析代码: for line in lines: lang = re.search

我试图从维基百科的文章中提取语言列表:按类型列出编程语言列表。有几行:

  • [[Ada(编程语言)| Ada]](多用途语言)
  • [[Afnix(编程语言)| Afnix]]–自动保护对数据的并发访问(以前称为“Aleph”,但与“Alef”无关)
  • [[Cilk]]–一种并发[[C(编程语言)| C]]
除了包含多个[[]]块的行(示例中包含Click language的行)之外,几乎所有行的解析都是正确的。解析代码:

for line in lines:
    lang = re.search('^\*+\s*(\[\['
                    '((?P<wiki_link>.+?)(\|))?'
                     '(?P<lang_name>.+?)' 
                     '\]\])', line)
    if lang:
        print lang.groupdict()
如何在一行中管理多个[[]]块

p.S.预期结果:

{'wiki_link': None, 'lang_name': u'Clik'}
你就快到了:

lang = re.search('^\*+\s*(\[\['
                '((?P<wiki_link>[^]]+?)(\|))?'
                 '(?P<lang_name>.+?)' 
                 '\]\])', line)
你就快到了:

lang = re.search('^\*+\s*(\[\['
                '((?P<wiki_link>[^]]+?)(\|))?'
                 '(?P<lang_name>.+?)' 
                 '\]\])', line)

为什么要使用普通正则表达式而不是wiki标记解析器?预期结果是什么?Matt,这只是出于教育原因:)例如,我的预期结果与“Ada”结果相同。为什么要使用普通正则表达式而不是wiki标记解析器?预期结果是什么?Matt,这只是出于教育原因:)例如,我的预期结果与“Ada”结果相同。
>>> print lang.groupdict()
 {'wiki_link': None, 'lang_name': 'Cilk'}