我想检查一个字符串是否以不同数字的十进制结尾,从搜索一阵子后,我发现最接近的解决方案是将值输入到元组中,并将其用作endswith()的条件。但是,除了输入所有可能的组合之外,还有没有更短的方法?
我尝试对结束条件进行硬编码,但是如果列表中没有新元素,则对这些条件不起作用,我还尝试使用regex将其他元素与十进制元素一起返回。任何帮助,将不胜感激
list1 = ["abcd 1.01", "zyx 22.98", "efgh 3.0", "qwe -70"]
for e in list1:
if e.endswith('.0') or e.endswith('.98'):
print 'pass'
编辑:对不起,应该指定我不想让'qwe -70'被接受,只有那些带有小数点的元素才能被接受
最佳答案
我想提出另一个解决方案:使用regular expressions搜索结尾的小数。
您可以使用以下正则表达式[-+]?[0-9]*\.[0-9]+$
为结束的十进制定义正则表达式。
正则表达式分解为:[-+]?
:可选-开头的-或+符号[0-9]*
:零个或多个数字\.
:必填点[0-9]+
:一位或多位数字$
:必须在该行的末尾
然后,我们可以测试正则表达式以查看其是否与列表中的任何成员匹配:
import re
regex = re.compile('[-+]?[0-9]*\.[0-9]+$')
list1 = ["abcd 1.01", "zyx 22.98", "efgh 3.0", "qwe -70", "test"]
for e in list1:
if regex.search(e) is not None:
print e + " passes"
else:
print e + " does not pass"
前一个脚本的输出如下:
abcd 1.01 passes
zyx 22.98 passes
efgh 3.0 passes
qwe -70 does not pass
test does not pass
关于python - 检查Python 2中字符串是否以小数结尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39672916/