Pythonで文字列を数値に変換する方法(int, float)

Pythonの組み込み関数intとfloatについて解説します。

Pythonで文字列を数値に変換する方法(int, float)

Pythonで数字を表す文字列を数値に変換する場合は、組み込み関数のint()関数とfloat()関数を使います。int()関数は整数への変換、float()関数は浮動小数点数への変換になります。

数値を文字列と組み合わせて、様々なフォーマットに変換したい場合には、以下の記事も参考にしてください。

int():文字列を整数に変換する

Pythonの組み込み関数int()は、数字を表す文字列を引数に取ると、整数int型に変換します。

数値を表す文字列の先頭に+-などの符号がついている場合や、数値の先頭に任意の数の0がついていても、整数型に変換してくれます。

# 文字列を整数に変換する

s1 = "100"
print(int(s1))
# 100

print(type(int(s1)))
# <class 'int'>


# -などの符号や先頭に0がついても変換できる
s2 = "-100"
print(int(s2))
# -100

s3 = "000123"
print(int(s3))
# 123

.を含んだ小数や,による桁区切りの文字列は適切に変換できません。一方、Pythonの数値の記法である、_による区切りを入れた数値は有効に変換することができます。

# 小数やカンマによる桁区切りは変換できない

s1 = "1.0"
print(int(s1))
# ValueError: invalid literal for int() with base 10: '1.0'

s2 = "1,000,000"
print(int(s2))
# ValueError: invalid literal for int() with base 10: '1,000,000'

# replace()メソッドを使うと、,を削除して変換できる
print(int(s2.replace(',', '')))
# 1000000


# アンダースコアによる桁区切りは有効
s3 = "1_000_000"
print(int(s3))
# 1000000

float():文字列を浮動小数点数に変換する

Pythonの組み込み関数float()は、数字を表す文字列を引数に取ると、浮動小数点数float型に変換します。

先頭に+-の符号がついている場合や、数値の先頭に任意の数の0がついていても、浮動小数点数型に変換してくれます。

# 文字列を浮動小数点数に変換する

s1 = "100"
print(float(s1))
# 100.0

print(type(float(s1)))
# <class 'float'>


# -などの符号や先頭に0がついても変換できる
s2 = "-100"
print(float(s2))
# -100.0

s3 = "000123"
print(float(s3))
# 123.0

当然ですが、.を含んだ小数は変換可能です。しかし、int()と同様に,による桁区切りの文字列は適切に変換できません。_による区切りを入れた数値は有効に変換できます。

# カンマによる桁区切りは変換できない

s1 = "123.456"
print(float(s1))
# 123.456

s2 = "1,000,000"
print(float(s2))
# ValueError: could not convert string to float: '1,000,000'

# replace()メソッドを使うと、,を削除して変換できる
print(float(s2.replace(',', '')))
# 1000000.0


# アンダースコアによる桁区切りは有効
s3 = "1_000_000"
print(float(s3))
# 1000000.0