我有一个输入(包括unicode):
s = "Question1: a12 is the number of a, b1 is the number of c?u th?"
我想获取所有不包含数字且超过2个字符的单词,希望输出:
['is', 'the', 'number', 'of', 'is', 'the', 'number', 'of', 'c?u', 'th?']。
我试过了
re.compile('[\w]{2,}').findall(s)
并得到
'Question1', 'a12', 'is', 'the', 'number', 'of', 'b1', 'is', 'the', 'number', 'of', 'c?u', 'th?'
有什么方法可以只获取没有数字的单词吗?
您可以使用
\n\nimport re\ns = "Question1: a12 is the number of a, b1 is the number of c\xe1\xba\xa7u th\xe1\xbb\xa7"\nprint(re.compile(r\'\\b[^\\W\\d_]{2,}\\b\').findall(s))\n# => [\'is\', \'the\', \'number\', \'of\', \'is\', \'the\', \'number\', \'of\', \'c\xe1\xba\xa7u\', \'th\xe1\xbb\xa7\']\nRun Code Online (Sandbox Code Playgroud)\n\n或者,如果您只想限制为仅包含至少 2 个字母的 ASCII 字母单词:
\n\nprint(re.compile(r\'\\b[a-zA-Z]{2,}\\b\').findall(s))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n细节
\n\n[^\\W\\d_](或r\'[a-zA-Z]仅 ASCII 变体)\\b r\'...\'.因此,r\'\\b[^\\W\\d_]{2,}\\b\'定义一个匹配单词边界、两个或多个字母的正则表达式,然后断言这两个字母后面没有单词字符。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |