如果我有一个字符串:
string = 'this-is-a-string-125'
如何在破折号后抓取最后一组字符并检查它们是否为数字?
答案 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)
没人知道partition或rpartition:
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
,如果字符串缺少短划线字符,后面跟一个或多个数字。