我有一些 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 块中,看看它是否成功,如 本问题 所述。
有人有其他想法吗?关于分区和 try/catch 方法的相对优点的意见?
原文由 Chris Upchurch 发布,翻译遵循 CC BY-SA 4.0 许可协议
我只会用..
..这很简单,而且有效。请注意,如果元素是例如 1<<1024,它仍然会抛出 OverflowError。
另一种选择是正则表达式: