用regex解析Wikipedia链接

2024-10-02 22:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • [[Ada (programming language)|Ada]] (multi-purpose language)
  • [[Afnix (programming language)|Afnix]] – concurrent access to data is protected automatically (previously called ''Aleph'', but unrelated to ''Alef'')
  • [[Cilk]] – a concurrent [[C (programming language)|C]]

几乎所有行的解析都是正确的,除了带有多个[[]]块的行(示例中是一个使用Click语言的行)。解析代码:

for line in lines:
    lang = re.search('^\*+\s*(\[\['
                    '((?P<wiki_link>.+?)(\|))?'
                     '(?P<lang_name>.+?)' 
                     '\]\])', line)
    if lang:
        print lang.groupdict()

和输出:

^{pr2}$

如何在一行中使用多个[[]]块?在

p.S.预期结果:

{'wiki_link': None, 'lang_name': u'Clik'}

Tags: toname语言列表langwikiline文章
1条回答
网友
1楼 · 发布于 2024-10-02 22:25:17

你就快到了:

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

只需将(?P<wiki_link>.+?)更改为(?P<wiki_link>[^]]+?)。在

它将与嵌套结构不匹配。在

^{pr2}$

相关问题 更多 >