在Python中把数字字符串str转换成数字int, float

商业

如果你想在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
Copied title and URL