python如何将字符串转换为数字:两类转换方法
python如何将字符串转换为数字,主要依靠int()转整数、float()转浮点数两个内置函数,int()仅能处理纯整数格式字符串,float()可处理整数、小数格式字符串,遇到带逗号、百分号、单位的字符串,需要先清洗文本再转换;你如果是读取表单输入、读取文本文件数字字符串,优先使用float(),如果是读取身份证、序号这类无小数的数字文本,优先用int(),该方法的适用边界是原始字符串内不能包含字母、中文、空格等非数字字符,仅允许数字与单个小数点,出现其他字符会直接抛出异常。
字符串转整数
int()函数接收字符串参数,返回整数类型,调用格式为int("数字字符串"),示例代码num=int("123"),变量num的类型为int,数值123。int()支持指定进制转换,第二个参数填写进制基数,int("1010",2)可以把二进制字符串转为十进制整数,适合处理二进制、十六进制文本编码场景。
int()不能识别带小数点的字符串,执行int("12.3")会直接报错,这是该函数的硬性限制。
字符串转浮点数
float()函数接收字符串参数,返回浮点数,调用格式num=float("45.6"),支持整数形态字符串,float("78")同样能正常得到浮点数78.0。这个函数只识别单个小数点,字符串内出现多个小数点会触发转换失败。
转换后的数据会保留小数结构,在整数场景下会多出.0后缀,你后续可以根据业务需求再转成int。
多转换方法对比
| 方法 | 支持字符串类型 | 异常触发场景 | 返回类型 |
|---|---|---|---|
| int() | 纯数字整数字符串 | 带小数点、字母、中文 | int整数 |
| float() | 整数、小数数字字符串 | 多小数点、字母、中文 | float浮点数 |
| eval(),不推荐 | 数字字符串 | 存在代码注入安全风险 | 对应数字类型 |
eval()虽然可以完成字符串转数字,但当字符串来源是外部用户输入内容时,外部输入可以植入恶意代码,会带来安全隐患,生产环境尽量避开eval。
异常捕获处理
外部读取的字符串经常存在格式异常,你需要用tryexcept捕获转换异常,避免程序直接中断。示例代码:try:res=int(input_str)exceptValueError:print("转换失败")。ValueError是转换失败时抛出的异常类型,代表字符串无法解析为目标数字。
清洗带符号的字符串,要先去除无关符号。
遇到带千分位逗号的字符串,例如"1,200",不能直接转换,你需要先用replace(",","")把逗号删除,再执行转换,完整示例:s="1,200";num=int(s.replace(",",""))。
带百分号的字符串如"95%",需要先去掉百分号,转换浮点数后再除以100,得到对应数值。
转换完成后,用type()函数校验变量类型,确认转换结果。
