Python 喜欢引发异常,这通常很棒。但是我正面临一些我迫切希望使用 C 的 atoi / atof 语义转换为整数的字符串——例如“3 of 12”、“3/12”、“3 / 12”的 atoi 都应该变成 3; atof(“3.14 秒”) 应该变成 3.14; atoi(” -99 score”) 应该变成 -99。 Python 当然有 atoi 和 atof 函数,它们的行为与 atoi 和 atof 完全不同,而与 Python 自己的 int 和 float 构造函数完全一样。
到目前为止我拥有的最好的,这真的很丑陋并且很难扩展到可用的各种浮动格式:
value = 1
s = str(s).strip()
if s.startswith("-"):
value = -1
s = s[1:]
elif s.startswith("+"):
s = s[1:]
try:
mul = int("".join(itertools.takewhile(str.isdigit, s)))
except (TypeError, ValueError, AttributeError):
mul = 0
return mul * value
原文由 user79758 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用正则表达式执行此操作非常简单: