python 字符转数字,就是把字符串形式的文本内容,转换成整数或者浮点数这类数值类型,最常用的内置函数是 int 和 float,在读取文件 用户输入 split 拆分文本之后非常常用,因为读取得到的数据默认都是字符串,想要做加减乘除运算,就必须完成字符转数字操作。很多新手做计算的时候直接报错,本质原因就是没有做字符转数字,字符串和数字不能直接参与算术运算,理解 int 和 float 的适用范围 报错场景 进制转换 异常捕获之后,就可以稳定完成转换,避免 ValueError 这类常见报错。
int 函数 转整数
基础语法 int (待转换字符串,base=10)
第一个参数是需要转换的字符或者字符串,默认 base 等于 10,代表十进制转换。
基础代码示例
s = "123"
num = int (s)
print (num + 10)
运行之后得到数值 133,可以正常参与计算。
进制转换用法,比如二进制字符串转十进制整数
s = "1010"
num = int (s, base=2)
print (num)
结果是 10,还支持 8 进制 16 进制转换,base 参数可以填写 2 8 16。
注意点,int 只能转换纯整数格式的字符,如果字符串里面带小数点,比如 "3.14",直接 int 转换会报错。
float 函数 转浮点数
基础语法 float (待转换字符串)
适合带小数点的字符转数字,转换之后得到 float 浮点类型,可以参与小数运算。
基础代码示例
s = "3.14"
num = float (s)
print (num 2)
运行结果是 6.28
float 也可以转换纯整数字符串,比如 "100" 转完之后变成 100.0,变成带小数点的浮点数。
还支持识别科学计数法字符串,比如 "1.2e3",float 转换之后是 1200.0。
转换失败常见情况
字符串里面包含中文 字母 多余空格之外的特殊符号,比如 "12a3",转换直接抛出 ValueError。
字符串是空字符串,int 和 float 都无法转换。
带千分位逗号的字符串,比如 "1,000",直接 int 转换会报错,需要提前替换逗号,写法是 s.replace (",","") 之后再转换。
负数字符串 "-56" 可以正常转换,正负号是允许识别的。
带异常捕获的安全转换写法
实际项目里面原始数据经常是脏数据,直接转换容易让程序崩溃,所以一般搭配 try except,转换失败的时候给默认值,这也是 python 字符转数字最推荐的实战写法。
代码示例
s = input ("输入内容")
try:
num = int (s)
print ("转换成功",num)
except ValueError:
print ("字符转数字失败,内容不是合法整数")
批量转换场景,比如 split 拆分之后得到字符串列表,使用列表推导式批量字符转数字
str_list = ["10","20","30"]
num_list = [int (x) for x in str_list]
int 和 float 转换对比表格
| 对比项 | int 函数 | float 函数 |
|---|---|---|
| 转换目标 | 整数类型 | 浮点数类型 |
| 是否支持小数点 | 不支持 | 支持 |
| 是否支持进制参数 | 支持 base | 不支持进制参数 |
| 科学计数法 | 不支持 | 支持 |
| 典型报错 | 带小数点字符转换报错 | 非法字符转换报错 |
补充拓展
如果是单个字符,比如字符 "5",本质也是字符串,同样使用 int 或者 float 完成 python 字符转数字。
转换完成之后,可以使用 type 函数验证转换后的类型,确认是不是已经变成数值类型。
如果业务需要保留精度,不要使用 float,因为浮点数存在精度误差,可以使用 decimal 模块的 Decimal 做高精度字符转数字。
【常见问题】
问题 1 python 字符转数字的时候,"3.14" 能不能直接用 int 转换
回答 1 python 字符转数字的时候,"3.14" 不能直接使用 int 转换,int 只识别整数格式,带小数点的字符串需要使用 float 函数完成 python 字符转数字。
问题 2 python 字符转数字,字符串里面有逗号千分位怎么办
回答 1 python 字符转数字,如果是 "1,000" 这种带千分位逗号的文本,不能直接转换,需要先用 replace 把逗号删除,再调用 int 或者 float 完成 python 字符转数字。
问题 3 python 字符转数字,转换失败怎么防止程序崩溃
回答 1 python 字符转数字的时候,原始文本可能是脏数据,推荐搭配 try except 捕获 ValueError 异常,转换失败设置默认值,这样可以保证程序不会因为 python 字符转数字失败直接终止。
问题 4 python 字符转数字,int 函数 base 参数是做什么的
回答 1 python 字符转数字,int 函数的 base 参数用来指定原字符串的进制,比如 base 等于 2 代表二进制字符转数字,默认 base 等于 10 就是普通十进制转换。
【免责申明】
本文内容仅作为 python 字符转数字的教学参考,代码案例仅适合本地学习练习,不同 python 版本转换规则保持一致,高精度业务场景需要额外考虑浮点数精度问题,自行修改运行代码产生的报错需要自行排查处理。


