📌  相关文章
📜  在Python中将字符串转换为数字并将数字转换为字符串

📅  最后修改于: 2020-08-27 07:36:02             🧑  作者: Mango

介绍

Python允许您以几种不同的方式转换字符串,整数和浮点数。要做到这一点,最简单的方法是使用基本的str()int()float()功能。最重要的是,还有其他两种方法。

在开始将字符串转换为数字并将数字转换为字符串之前,我们首先来了解一下Python中如何表示字符串和数字。

注意:为了简化运行和显示这些示例,我们将使用Python解释器。

String字符串

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()函数

如果要将字符串转换为整数,最简单的方法是使用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()函数

通过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()函数

通过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()函数可用于将任何数字类型更改为字符串。

该功能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()函数,该函数允许您在字符串中设置占位符,然后将另一种数据类型转换为字符串并填充占位符。

要使用该函数,只需编写一个字符串,后跟.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()功能也有其局限性,并且可能引发异常如果输入字符串未格式化,正是因为他们的期望。