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

car*_*ine 3 python regex split

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

但是,我需要的是还将具有数字和字母的标记分成只有一个或另一个的标记,例如.

re.split(pattern, "my t0kens")
Run Code Online (Sandbox Code Playgroud)

会回来的["my", "t", "0", "kens"].

我猜我可能需要使用lookahead/lookbehind,但我不确定这是否真的有必要或者是否有更好的方法.

kjp*_*kjp 7

请尝试使用findall方法.

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

编辑:下面巴特的评论更好的方式.

>>> print re.findall('[a-zA-Z]+|\\d+', "my t0kens")
['my', 't', '0', 'kens']
>>>
Run Code Online (Sandbox Code Playgroud)

  • `[ '我的',"T:|`,它返回`打印re.findall( "我的t0kens" \\ d + [A-ZA-Z] +'):你可以在你的两个建议结合挤','0','kens']` (6认同)
  • 另外,建议使用原始字符串表示正则表达式.无需逃避那些斜线.例如`r'[a-zA-Z] + |\d +'` (2认同)