Python 与特定语言字符的模式匹配
Python pattern matching with language-specific characters
我想从一个字符串列表中提取所有单词并将它们保存并扩展到一个新列表中。我使用以下形式的模式匹配成功地做到了这一点:
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']
非常感谢您提供解决此问题的建议。
您可以使用
import re
p = re.compile(r'[^\W\d_]+')
print(p.findall("02_Sektion_München_Gruppe_Süd"))
# => ['Sektion', 'München', 'Gruppe', 'Süd']
[^\W\d_]+
模式匹配任何 1+ 个不是非单词、数字和 _
的字符,即只有字母。
在 Python 2.x 中,您必须添加 re.UNICODE
标志以使其匹配 Unicode 字母:
p = re.compile(r'[^\W\d_]+', re.U)
我想从一个字符串列表中提取所有单词并将它们保存并扩展到一个新列表中。我使用以下形式的模式匹配成功地做到了这一点:
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']
非常感谢您提供解决此问题的建议。
您可以使用
import re
p = re.compile(r'[^\W\d_]+')
print(p.findall("02_Sektion_München_Gruppe_Süd"))
# => ['Sektion', 'München', 'Gruppe', 'Süd']
[^\W\d_]+
模式匹配任何 1+ 个不是非单词、数字和 _
的字符,即只有字母。
在 Python 2.x 中,您必须添加 re.UNICODE
标志以使其匹配 Unicode 字母:
p = re.compile(r'[^\W\d_]+', re.U)