2.3.4 字符串类型与其他类型的转换
应用程序中有时需要将字符串类型的数据转换成其他数据类型,或者相反。下面介绍Python 中如何实现这些功能。
首先看函数 eval()。eval 函数接收一个字符串,并将该字符串解释成 Python 表达式 进行求值,最终得到特定类型的结果值;如果字符串无法解释成合法的 Python 表达式则报 错(如语法错误、未定义变量错误等)。例如:
>>> eval("3.14")
3.14
>>> eval("1+2*3/4%5")
2
>>> eval("a+1")
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <;module> eval("a+1")
File "<stringv", line 1, in <module> NameError: name 'a' is not defined
>>> a = 10
>>> eval("a+1")
11
>>> eval("a > 8 and True")
True
>>> s = "Hello"
>>> eval("s + 'World'")
'HelloWorld'
最后一个例子表明 eval 也可以对字符串类型的表达式求值,当然这没什么意义,eval 的主要用途是对字符串形式的数值表达式求值。例如从键盘输入一个表达式或者从一个文本 文件中读取一个表达式的场合,都需要用 eval 来求值。
如果字符串的形状符合某种类型的字面值的形式,则可以直接用 int()、long()、 float()、bool()等来转换类型。这里 bool 是布尔类型,详见 2.4 节。如:
>>> int("123")
123
>>> long("123")
① 这是 Windows XP 平台(默认用 GBK)下的结果。不同平台会有不同编码。
123L
>>> float("123")
123.0
>>> bool("True")
True
如果希望将其他类型的值转换成字符串类型,可以使用 str()函数。例如:
>>> str(123)
'123'
>>> a = 123.4
>>> print str(a) + "567"
123.4567
注意最后这个例子用到了字符串的合并运算。如果不转换变量 a 的类型,Python 就会 将“+”解释成数值加法,但后一个操作数是字符串而非数值,结果即导致错误。