使用Python从字符串中删除前导数字?

时间:2016-06-20 05:34:28

标签: python string python-2.7

我看到很多问题,询问如何从字符串中删除前导零,但我还没有看到任何询问如何从字符串中删除任何和所有前导数字的问题。

我一直在尝试使用lstriptype函数,isdigit,切片表示法和正则表达式的组合,但尚未找到方法。

有一种简单的方法吗?

例如:

  • “123ABCDEF”应成为“ABCDEF”
  • “ABCDEF”应保留为“ABCDEF”
  • “1A1”应为“A1”
  • “12AB3456CD”应变为“AB3456CD”

3 个答案:

答案 0 :(得分:5)

一种简单的方法可能是用string.digits来表示所有数字,它只是简单地为您提供一个字符串,其中包含要string.lstrip删除的所有数字字符'0123456789'

>>> from string import digits
>>> s = '123dog12'
>>> s.lstrip(digits)
'dog12'

答案 1 :(得分:3)

我想指出,虽然Mitch和RebelWithoutAPulse的答案都是正确的,但他们并没有做同样的事情。

Mitch的答案留下了“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,' 0' 。

$scope.data = myData;

另一方面,RevelWithoutAPulse的回答,左边剥离任何已知为数字的字符。

>>> from string import digits
>>> digits
'0123456789'
>>> '123dog12'.lstrip(digits)
'dog12'

那有什么区别?嗯,有两点不同:

  • many other digit characters比印度 - 阿拉伯数字。
  • >>> import re >>> re.sub('^\d+', '', '123dog12') 'dog12' 对RTL语言不明确。实际上,它会删除前导匹配字符,这些字符可能位于右侧。 Regexp的lstrip运算符更直接。

以下是一些例子:

^

(注意阿拉伯语的例子,从右到左阅读阿拉伯语,右边的数字是正确的被删除)

所以...我猜结论是肯定会根据你想要做的事情选择正确的解决方案。

答案 2 :(得分:1)

使用re的正则表达式:

import re
re.sub('^\d+', '', '1234AB456')

变为:

'AB456'

用空字符串替换字符串开头的任何正数位数。