如何用数字和字母分割 Python 字符串?

msa*_*aio 4 python string split

我有包含可选数字和字母的字符串,例如“01a”、“b”和“02”。这些字符串总是由两部分组成,左边是数字,右边是字母。我想拆分这些字符串以分别获取数字和字母。我怎样才能定义mySplit得到这个结果?

>>> map(mySplit, ['01123absd', 'bsdf', '02454'])

[('01123', 'absd'), (None, 'bsdf'), ('02454', None)]
Run Code Online (Sandbox Code Playgroud)

bvi*_*dal 5

您可以为此使用正则表达式。我们想要的是:

  • 以 0 个或多个数字开头的字符串,
  • 以 0 个或多个字母结尾的字符串。

请注意,regex将创建命名组,每次调用时都会编译一次以提高效率。

import re
regex = re.compile("^(?P<numbers>\d*)(?P<letters>\w*)$")

def myFunction(entry):
  (numbers, letters) = regex.search(entry).groups()
  return (numbers or None, letters or None)

map(myFunction, ['01123absd', 'bsdf', '02454'])
Run Code Online (Sandbox Code Playgroud)

最后一行的调用给出了以下输出:

[('01123', 'absd'), (None, 'bsdf'), ('02454', None)]
Run Code Online (Sandbox Code Playgroud)