📅  最后修改于: 2020-08-27 07:36:02             🧑  作者: Mango
Python允许您以几种不同的方式转换字符串,整数和浮点数。要做到这一点,最简单的方法是使用基本的str()
,int()
和float()
功能。最重要的是,还有其他两种方法。
在开始将字符串转换为数字并将数字转换为字符串之前,我们首先来了解一下Python中如何表示字符串和数字。
注意:为了简化运行和显示这些示例,我们将使用Python解释器。
Python中的字符串文字是通过用双引号(“)或单引号(‘)括起来的字符来声明的。Python中的字符串实际上只是具有Unicode的数组,每个字符作为数组中的元素,允许您使用索引来访问字符串中的单个字符。
例如,我们可以通过指定索引来访问这些字符串的各个字符:
>>> stringFirst = "Hello World!"
>>> stringSecond = 'Again!'
>>> stringFirst[3]
'l'
>>> stringSecond[3]
'i'
Python中的数字可以是integer
,a float
或a complex
。
整数可以是正整数或负整数。从Python 3开始,整数是无界的,几乎可以容纳任何数字。在Python 3之前,对于32位运行时,最大边界为2 31 -1,对于64位运行时,最大边界为2 63 -1。
浮点数的长度也没有限制,但是浮点数必须包含小数点。
复数必须有一个虚部,用表示j
:
>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j
如果要将字符串转换为整数,最简单的方法是使用int()
function。只需将字符串作为参数传递:
>>> x = "23"
>>> y = "20"
>>> z = int(x) - int(y)
>>> z
3
当您将整数的字符串表示形式传递给时,此方法可以按预期工作int()
,但如果传递的字符串不包含整数值,则会遇到麻烦。如果您的字符串中包含任何非数字字符,int()
则将引发异常:
>>> x = "23a"
>>> z = int(x)
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int() with base 10: '23a'
如果传递了有效的float字符串,甚至会引发相同的异常:
>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int() with base 10: '23.4'
该int()
函数确实具有另一个有用的功能,不仅仅是将字符串转换为整数,它还允许您将数字从任意基数转换为以10为基数的整数。例如,我们可以使用base
参数将以下二进制字符串转换为以10为底的整数:
>>> int('1101100', base=2)
108
可以对任何其他基数执行相同的操作,例如十六进制(基数16):
>>> int('6C', base=16)
108
通过float()
函数将字符串文字转换为浮点数:
>>> x = "23.23"
>>> y = "23.00"
>>> z = float(x) - float(y)
>>> z
0.23000000000000043
请注意,结果值并不完全准确,应该是0.23
。这与浮点数学问题有关,而不是与从字符串到数字的转换有关。
该float()
函数比函数具有更多的灵活性,int()
因为它可以解析和转换浮点数和整数:
>>> x = "23"
>>> y = "20"
>>> z = float(x) - float(y)
>>> z
3.0
不同于int()
,float()
当它接收到非浮点数值时不会引发异常。
但是,它会如果一个非数字的值传递给它引发异常:
>>> x = "23a"
>>> z = float(x)
Traceback (most recent call last):
File "", line 1, in
ValueError: could not convert string to float: '23a'
虽然float()
并没有要非基本转换10个号码的能力等int()
的确,它确实有能力在科学记数法表示将数字转换(又名电子符号):
>>> float('23e-5')
0.00023
>>> float('23e2')
2300.0
通过complex()
函数将字符串文字转换为复数。为此,字符串必须遵循特定的格式。特别是,其格式必须在+
or -
运算符周围没有空格:
>>> x = "5+3j"
>>> y = "3+1j"
>>> z = complex(x) + complex(y)
>>> z
(8+4j)
+
或-
运算符之间有多余的空格将导致引发异常:
>>> z = complex("5+ 3j")
Traceback (most recent call last):
File "", line 1, in
ValueError: complex() arg is a malformed string
与float()
功能一样,complex()
它允许的数字类型也更加宽松。例如,数字的虚部可以完全省略,整数和浮点数也可以被解析:
>>> complex("1")
(1+0j)
>>> complex("1.2")
(1.2+0j)
正如您所看到的,不应将其用作int
/ 的更灵活替代,float
因为它会自动将数字的虚部添加到字符串化版本中。
该str()
函数可用于将任何数字类型更改为字符串。
该功能str()
可从Python 3.0+开始使用,因为Python 3.0+中的字符串默认情况下为Unicode。但是,对于低于3.0的Python版本,情况并非如此-为了达到相同的目的,使用了该unicode()
函数:
>>> str(23) # Integer to String
'23'
>>> str(23.3) # Float to String
'23.3'
>>> str(5+4j) # Complex to String
'(5+4j)'
有趣的str()
是,它可以处理将任何类型的数字转换为字符串的过程,因此您无需担心要基于要转换的数字类型选择正确的方法。
将数字转换为字符串的另一种方法是使用format()
函数,该函数允许您在字符串中设置占位符,然后将另一种数据类型转换为字符串并填充占位符。
要使用该函数,只需编写一个字符串,后跟.format()
并传递占位符的参数。
这是一个例子:
>>> "My age is {}".format(21)
'My age is 21'
函数中的参数.format()
也可以使用其位置或变量名称单独引用:
>>> "You get {product} when you multiply {1} with {0}".format(5.5, 3, product=16.5)
'You get 16.5 when you multiply 3 with 5.5'
请注意,在引擎盖下,该.format()
函数仅用于str()
将参数转换为字符串。因此,从本质上讲,这是与上一节类似的将数字转换为字符串的方式,但是它.format()
充当格式化字符串的便捷功能。
Python允许您以几种不同的方式转换字符串,整数和浮点数。要做到这一点,最简单的方法是使用基本的str()
,int()
和float()
功能。最重要的是,还有其他几种方法,例如format()
函数。只要记住了int()
,float()
和complex()
功能也有其局限性,并且可能引发异常如果输入字符串未格式化,正是因为他们的期望。