如果我有一个字符串:
string = 'this-is-a-string-125'
如何获取破折号后的最后一组字符并检查它们是否为数字?
如果你想验证它们实际上是数字,你可以做
x.rsplit('-', 1)[1].isdigit()
“数字”是一个更通用的标准,可以用不同的方式解释。例如“12.87”在某种意义上是数字,但并非所有字符都是数字。
您可以int(x.rsplit('-', 1)[1])
查看字符串是否可以解释为整数,或者float(x.rsplit('-', 1)[1])
查看它是否可以解释为浮点数。(如果字符串不是适当意义上的数字,这些将引发 ValueError ,因此您可以捕获该异常并在它不是数字时执行您需要做的任何事情。)
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
没有人知道partition或rpartition:
text.rpartition("-")[-1].isdigit()
怎么样:
str.split('-')[-1].isdigit()
似乎一个简单的正则表达式可以同时进行剥离和检查:
>>> 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
如果字符串缺少一个破折号字符后跟一个或多个数字的末尾。