2.3.4 字符串类型与其他类型的转换

最后更新于:2022-04-02 00:25:59

### 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 "", line 1, in <;module> eval("a+1") File " 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 就会 将“+”解释成数值加法,但后一个操作数是字符串而非数值,结果即导致错误。
';