代码之家  ›  专栏  ›  技术社区  ›  Jones1220

与语言特定字符匹配的python模式

  •  1
  • Jones1220  · 技术社区  · 6 年前

    从字符串列表中,我要提取所有单词并保存扩展到新列表。我成功地使用了以下形式的模式匹配:

    import re
    p = re.compile('[a-z]+', re.IGNORECASE)
    p.findall("02_Sektion_München_Gruppe_Süd")
    

    不幸的是,该语言包含特定于语言的字符,因此以给定示例的形式显示的字符串会产生:

    ['Sektion', 'M', 'nchen', 'Gruppe', 'S', 'd']
    

    我要它屈服:

    ['Sektion', 'München', 'Gruppe', 'Süd']
    

    我很感激你的建议如何解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Wiktor Stribiżew    6 年前

    您可以使用

    import re
    p = re.compile(r'[^\W\d_]+')
    print(p.findall("02_Sektion_München_Gruppe_Süd"))
    # => ['Sektion', 'München', 'Gruppe', 'Süd']
    

    Python 3 demo

    这个 [^\W\d_]+ 模式匹配任何非单词、数字和 _ ,也就是说,那只是字母。

    在Python2.x中,必须添加 re.UNICODE 使其与Unicode字母匹配的标志:

    p = re.compile(r'[^\W\d_]+', re.U)