一尘不染

检查字符串是否可以在Python中转换为float

python

我有一些Python代码,这些代码遍历字符串列表,并在可能的情况下将它们转换为整数或浮点数。对整数执行此操作非常简单

if element.isdigit():
  newelement = int(element)

浮点数比较困难。现在,我正在使用partition('.')分割字符串并检查以确保一侧或两侧都是数字。

partition = element.partition('.')
if (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
  newelement = float(element)

这行得通,但是显然,如果使用if语句有点让人头疼。我考虑的另一种解决方案是将转换仅包装在try /
catch块中,然后查看转换是否成功

还有其他想法吗?关于分区和尝试/捕获方法的相对优点的看法?


阅读 183

收藏
2020-12-20

共1个答案

一尘不染

我会用..

try:
    float(element)
except ValueError:
    print "Not a float"

..这很简单,并且可以正常工作

另一个选择是正则表达式:

import re
if re.match(r'^-?\d+(?:\.\d+)?$', element) is None:
    print "Not float"
2020-12-20