Python中单独的数字/字母标记

2024-04-20 01:27:20 发布

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

我使用re.split()将字符串分隔成标记。目前我使用的作为参数的模式是[^\dA-Za-z],它从字符串中检索字母数字标记。在

然而,我需要的是将同时具有数字和字母的令牌拆分为只包含一个或另一个的令牌,例如

re.split(pattern, "my t0kens")

将返回["my", "t", "0", "kens"]。在

我想我可能需要使用lookahead/lookbehind,但我不确定这是否有必要,或者是否有更好的方法来实现它。在


Tags: 字符串标记re参数my字母模式数字
3条回答

应该是一行代码

re.findall('[a-z]+|[\d]+', 'my t0kens')

试试findall方法。在

>>> print re.findall ('[^\d ]+', "my t0kens");
['my', 't', 'kens']
>>> print re.findall ('[\d]+', "my t0kens");
['0']
>>>

编辑:从巴特的评论下面更好的方式。在

^{pr2}$
>>> [x for x in re.split(r'\s+|(\d+)',"my t0kens") if x]
['my', 't', '0', 'kens']

通过在模式中使用捕获括号,标记也将被返回。因为您只想维护数字而不是空格,所以我将\s放在括号之外,这样None将被返回,然后使用一个简单的循环过滤掉。在

相关问题 更多 >