获取字符串数字前缀的最简单方法


问题内容

在Python中获取字符串的数字前缀的最干净方法是什么?

“干净”是指简单,简短,易读。我不太在乎性能,我想无论如何它在Python中几乎无法测量。

例如:

给定字符串'123abc456def',获取字符串的最干净方法是什么'123'

下面的代码获得'123456'

input = '123abc456def'
output = ''.join(c for c in input if c in '0123456789')

所以我基本上是在寻找一些方法来代替ifwhile


问题答案:

您可以使用itertools.takewhile它将在字符串(可迭代的参数)上进行迭代,直到遇到遇到第一个返回的项目False(通过传递给预测函数):

>>> from itertools import takewhile
>>> input = '123abc456def'
>>> ''.join(takewhile(str.isdigit, input))
'123'