我有一些 Python 代码可以遍历字符串列表,并尽可能将它们转换为整数或 float 。对整数执行此操作非常简单
if element.isdigit():
newelement = int(element)
float 更难。现在我正在使用 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 block 中并查看它是否成功,如 this question 中所述。 .
有人有其他想法吗?对分区和 try/catch 方法的优缺点有何看法?
最佳答案
我会用..
try:
float(element)
except ValueError:
print "Not a float"
..它很简单,而且很有效。请注意,如果元素是例如它仍然会抛出溢出错误。 1<<1024.
另一种选择是正则表达式:
import re
if re.match(r'^-?\d+(?:\.\d+)$', element) is None:
print "Not float"
关于python - 检查字符串是否可以在 Python 中转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736043/