2024-04-20 01:27:20 发布
网友
我使用re.split()将字符串分隔成标记。目前我使用的作为参数的模式是[^\dA-Za-z],它从字符串中检索字母数字标记。在
re.split()
[^\dA-Za-z]
然而,我需要的是将同时具有数字和字母的令牌拆分为只包含一个或另一个的令牌,例如
re.split(pattern, "my t0kens")
将返回["my", "t", "0", "kens"]。在
["my", "t", "0", "kens"]
我想我可能需要使用lookahead/lookbehind,但我不确定这是否有必要,或者是否有更好的方法来实现它。在
应该是一行代码
re.findall('[a-z]+|[\d]+', 'my t0kens')
试试findall方法。在
>>> print re.findall ('[^\d ]+', "my t0kens"); ['my', 't', 'kens'] >>> print re.findall ('[\d]+', "my t0kens"); ['0'] >>>
编辑:从巴特的评论下面更好的方式。在
>>> [x for x in re.split(r'\s+|(\d+)',"my t0kens") if x] ['my', 't', '0', 'kens']
通过在模式中使用捕获括号,标记也将被返回。因为您只想维护数字而不是空格,所以我将\s放在括号之外,这样None将被返回,然后使用一个简单的循环过滤掉。在
\s
None
应该是一行代码
试试findall方法。在
编辑:从巴特的评论下面更好的方式。在
^{pr2}$通过在模式中使用捕获括号,标记也将被返回。因为您只想维护数字而不是空格,所以我将
\s
放在括号之外,这样None
将被返回,然后使用一个简单的循环过滤掉。在相关问题 更多 >
编程相关推荐