Python 中如何把字符串解析成整数或浮点数?
Python 字符串转数字:int('42') 转整数、float('3.14') 转浮点。非法输入抛 ValueError,需 try/except 容错。本文介绍转换方法及常见坑。
转整数用 int('42'),转浮点用 float('3.14')。字符串必须是合法数字形式,否则抛 ValueError,处理用户输入时记得 try/except。
基本转换
int('42') # 42
float('3.14') # 3.14
float('42') # 42.0
容错处理
def to_number(s, default=0):
try:
return int(s)
except ValueError:
try:
return float(s)
except ValueError:
return default
print(to_number('42')) # 42
print(to_number('3.14')) # 3.14
print(to_number('abc')) # 0
常见坑
int('3.14') # ValueError!int 不能直接转小数字符串
int(float('3.14')) # 3——先转 float 再取整
int(' 42 ') # 42——首尾空白自动忽略
int('42px') # ValueError——带单位不行
int('1,000') # ValueError——千分位逗号要先去掉
int('1,000'.replace(',', '')) # 1000
进制转换
int('ff', 16) # 255(十六进制)
int('0b101', 2) # 5(二进制)
int('777', 8) # 511(八进制)
常见问题(FAQ)
Q:如何判断字符串能否转数字?
A:转换前可以用 s.isdigit()(只认正整数)、正则或 str.isnumeric();最稳妥的还是直接 try。
Q:科学计数字符串?
A:float('1e5') 得到 100000.0,float 支持;int 不支持。
Q:精度要求高(金额)?
A:用 Decimal('3.14'),避免 float 的二进制浮点误差。