如果你想在Python中把一串数字转换为数值,使用int()转换为整数,使用float()转换为浮点数。
这里解释一下,并附有示例代码。
- 基本用途
- 将数字字符串转换为整数:
int()
- 将一串数字转换为浮点数字:
float()
- 将数字字符串转换为整数:
- 特殊用途
- 将二进制、八进制和十六进制符号的字符串转换为数字
- 将指数符号的字符串转换为数字值
- 将全幅的阿拉伯数字字符串转换成数字
- 将一串汉字转换为数字
要将一个数字值转换为字符串,请使用str()。
如果你想把数字或字符串转换成各种格式,可以使用format()函数或字符串方法str.format()。然后你可以转换为0-fill、二进制、八进制、十六进制、指数符号等。详见以下文章。
它还可以将一个字符串列表转换为一个数字列表。详见以下文章。
将数字字符串转换为整数: int()
你可以使用int()将一串数字转换为整数类型的数字。
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
小数,包括小数点,以及由逗号分隔的字符串将导致ValueError。
# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'
# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'
逗号分隔的字符串可以通过使用replace()方法去除逗号(用一个空字符串代替)来进行转换。
print(int('10,000'.replace(',', '')))
# 10000
将一串数字转换为浮点数字: float()
float()可以用来将一串数字转换为浮点数字类型。
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
省略了整数部分的字符串通过用0补足整数部分进行转换。
print(float('.23'))
# 0.23
整数字符串也被转换为浮点数字。
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
将二进制、八进制和十六进制符号的字符串转换为数字
如果radix被指定为int()的第二个参数,字符串可以通过考虑二进制、八进制、十六进制等转换为一个整数int。
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
与前面的例子一样,如果省略,则认为该数字是一个小数。
print(int('100', 10))
print(int('100'))
# 100
# 100
如果小数点被设置为0,转换将基于字符串前缀。关于字符串前缀,见下文。
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
前缀和六角字母可以是大写或小写。
print(int('FF', 16))
print(int('ff', 16))
# 255
# 255
print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255
有关二进制、八进制和十六进制数字和字符串的相互转换的信息,请参见以下文章。
将指数符号的字符串转换为数字值
指数符号的字符串可以直接用float()转换为浮点数类型。
print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>
print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>
小写的e也可以是大写的E。
print(float('1.23E-4'))
# 0.000123
将全幅的阿拉伯数字字符串转换成数字
全幅的阿拉伯数字可以通过int()或float()直接转换为数字。
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
但是,如果减号和小数点后的句号等符号是全宽的字符,则会产生ValueError。
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
如果数字是全宽字符,可以顺利转换,但减号和小数点是半宽字符。通过使用replace()方法将全宽符号替换为半宽符号,可以实现转换。
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
将一串汉字转换为数字
unicodedata模块中的unicodedata.numeric()函数可以用来将一个单一的Unicode汉字转换成一个浮点数类型的数字。
如果不是单个字母,就会出现错误。另外,非数字字符也会导致错误。
import unicodedata
print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>
print(unicodedata.numeric('十'))
# 10.0
print(unicodedata.numeric('参'))
# 3.0
print(unicodedata.numeric('億'))
# 100000000.0
# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str
# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character