1

如果我有一个字符串:

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

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

4

5 回答 5

9

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

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

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

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

于 2012-09-05T21:00:47.533 回答
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
于 2012-09-05T21:01:15.137 回答
2

没有人知道partitionrpartition

text.rpartition("-")[-1].isdigit()
于 2012-09-05T21:27:47.910 回答
1

怎么样:

str.split('-')[-1].isdigit()
于 2012-09-05T21:03:17.910 回答
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如果字符串缺少一个破折号字符后跟一个或多个数字的末尾。

于 2012-09-05T21:21:34.760 回答