我有一些Python代码,这些代码遍历字符串列表,并在可能的情况下将它们转换为整数或浮点数。对整数执行此操作非常简单
if element.isdigit(): newelement = int(element)
浮点数比较困难。现在,我正在使用partition('.')分割字符串并检查以确保一侧或两侧都是数字。
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块中,然后查看转换是否成功
还有其他想法吗?关于分区和尝试/捕获方法的相对优点的看法?
我会用..
try: float(element) except ValueError: print "Not a float"
..这很简单,并且可以正常工作
另一个选择是正则表达式:
import re if re.match(r'^-?\d+(?:\.\d+)?$', element) is None: print "Not float"