在Python中的字符串中删除最后一个破折号后的所有字符,并测试是否为数字?

时间:2012-09-05 20:59:21

标签: python string numeric

如果我有一个字符串:

string = 'this-is-a-string-125'

如何在破折号后抓取最后一组字符并检查它们是否为数字?

5 个答案:

答案 0 :(得分:9)

如果你想验证它们实际上是数字,你可以

x.rsplit('-', 1)[1].isdigit()

“数字”是一个更通用的标准,可以用不同的方式解释。例如,“12.87”在某种意义上是数字,但并非所有字符都是数字。

您可以int(x.rsplit('-', 1)[1])查看字符串是否可以解释为整数,或float(x.rsplit('-', 1)[1])查看是否可以将其解释为浮点数。 (如果字符串在适当的意义上不是数字,则会引发ValueError,因此如果它不是数字,您可以捕获该异常并执行您需要做的任何事情。)

答案 1 :(得分:5)

s = 'this-is-a-string-125'.split('-')[-1].isdigit()

我们用破折号('-')拆分字符串,它给出了一个子字符串列表(参见split())。然后我们取最后一个([-1])并验证该字符串仅包含数字(isdigit()):

>>> 'this-is-a-string-125'.split('-')
['this', 'is', 'a', 'string', '125']
>>> 'this-is-a-string-125'.split('-')[-1]
'125'
>>> 'this-is-a-string-125'.split('-')[-1].isdigit()
True

答案 2 :(得分:2)

没人知道partitionrpartition

text.rpartition("-")[-1].isdigit()

答案 3 :(得分:1)

怎么样:

str.split('-')[-1].isdigit()

答案 4 :(得分:1)

看起来像一个简单的正则表达式可以同时进行剥离和检查:

>>> import re
>>> s = 'this-is-a-string-125'
>>> m = re.search(r'-(\d+)$', s)
>>> m.group(1)
'125'
>>>  s[:m.start()] # gives you what was stripped away.
'this-is-a-string'

匹配对象m将为None,如果字符串缺少短划线字符,后面跟一个或多个数字。