Python 字符串转换为数字

在 Python 中,如果想要将一个字符串转换为一个数字,常用的有以下 3 种方式。

  • 使用 int() 函数。
  • 使用 float() 函数。
  • 使用 eval() 函数。

使用 int() 将字符串转为整数

int() 是 Python 的一个内置函数,它用于将 “数值(如浮点数)” 或 “字符串” 转换成一个整数。

语法:

int(value, base)

说明:

int() 函数接收以下 2 个参数。

  • value(必选):是一个数字或一个字符串。如果是字符串,则要求是一个整型字符串,字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。
  • base(可选):表示这是什么进制的字符串,默认值为 10。比如 “2” 表示二进制,“8” 表示八进制。需要注意的是,只有 value 为字符串时,才能使用 base 参数。

示例 1:int() 的参数是 “不带符号的字符串”

a = int('666')
print(a)

b = int('3.14')
print(b)

运行结果如下。

666
(报错)ValueError: invalid literal for int() with base 10: '3.14'

分析:

int() 只能将 “整型字符串” 转换为整数,而对于非整型字符串,则会直接报错。

示例 2:int() 的参数是 “带符号的字符串”

a = int('+666')
print(a)

b = int('-666')
print(b)

运行结果如下。

666
-666

分析:

如果 int() 的参数是字符串,则要求是一个整型字符串。不过字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。

使用 float() 将字符串转为浮点数

float() 是 Python 的一个内置函数,用于将 “数值(如整数)” 或 “字符串” 转换成一个浮点数。

语法:

float(value)

说明:

float() 函数接收单个参数。

  • value(必选):是一个数字或一个字符串。如果是字符串,则要求是整型字符串或浮点型字符串,字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。

示例 3:float() 参数是 “字符串”

# 整数型字符串
print(float('666'))

# 浮点型字符串
print(float('3.14'))

运行结果如下。

666.0
3.14

分析:

一般情况下,只有 “整型字符串” 或 “浮点型字符串” 才可以作为 float() 函数的参数。如果使用了其他不符合条件的字符串,则会直接报错。比如执行 print(float('lvye123')),此时运行结果如下。

(报错)ValueError: could not convert string to float: 'lvye123'

当然了,上面指的是一般情况下。实际上,float() 函数还有两种特殊情况,也就是表示 NaN 值和 infinity 值时,请看下面两个例子。

示例 4:float() 表示 NaN 值

print(float('nan'))
print(float('nAn'))
print(float('nAN'))
print(float('Nan'))
print(float('NaN'))

运行结果如下。

nan
nan
nan
nan
nan

分析:

float() 函数会将 'nan'、 'nAn'、'nAN'、'Nan'、'NaN'(不区分大小写)等字符串转换为 nan 值。

示例 5:float() 表示正无穷大值

print(float('inf'))
print(float('Inf'))
print(float('infinity'))
print(float('Infinity'))
print(float('InFiNiTy'))

运行结果如下。

inf 
inf
inf
inf
inf

分析:

float() 函数会将 'inf'、'Inf'、'infinity'、'Infinity'、'InFiNiTy'(不区分大小写)等字符串转换为 inf(即正无穷大)。

提示: 对于 '-inf'、'-Inf'、'-infinity'、'-Infinity'、'-InFiNiTy'(不区分大小写)等,float() 会将其转换为 -inf(即负无穷大)。

示例 6:float() 的参数是 “带符号的字符串”

a = float('+3.14')
print(a)

b = float('-3.14')
print(b)

运行结果如下。

3.14
-3.14

分析:

如果 float() 的参数是字符串,则要求是一个整型字符串或浮点型字符串。且字符串前面可以有符号(即 “+” 和 “-”),也可以有空格。

使用 eval() 将字符串转为数字

eval() 是 Python 的一个内置函数,它用于将一个字符串作为 Python 表达式执行,并返回执行结果。

语法:

eval(expression, globals=None, locals=None)

说明:

eval() 函数接收以下 3 个参数。

  • expression(必选):是一个字符串,它会转换为一个 Python 表达式并执行。
  • globals(可选):是一个字典,用于指定全局命名空间,默认值为 None。
  • locals(可选):是一个字典,用于指定本地命名空间,默认值为 None。

如果 globasl 和 locals 这 2 个参数省略,则 eval() 函数是在 “当前作用域” 中执行表达式。

示例 7:eval() 基本用法

a = eval('666')
b = eval('3.14')

print(a)
print(type(a))
print(b)
print(type(b))

运行结果如下。

666
<class 'int'>
3.14
<class 'float'>

分析:

如果是整型字符串,则 eval() 会将其转换为整数;如果是浮点型字符串,则 eval() 会将其转换为浮点数。

注意: 在 Python 业界,eval() 被称为 “万恶之源”。在实际开发中,我们极不推荐使用 eval() 来处理未知的用户输入!

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号