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

Python Python

Pythonで文字列を数値に変換する方法について書いています。
文字列から数値に変更するには、下記の関数を使います。

・int関数
・float関数

サンプルコードはPythonのバージョン3.9.12で動作を検証しています。

int関数で変換する

int関数を使用することで、文字列を数値に変換することが可能です。
例えば、下記のように使用します。

numberText = "200"
total = int(numberText) + 110

print(total) # 310

最初にnumberText変数に文字列で200を代入しています。
その後にint関数を使って、numberText変数の文字列(数値)を数値に変換しています。

そして、変換した数値に「+ 110」を足して、total変数に代入しています。
print関数で出力すると、しっかり足されて「310」が出力されることが確認できました。

計算する場合は、文字列のままだと文字列として結合されてしまうので、変換が必要です。
どちらも文字列の場合は、下記のように文字列として連結されてしまいます。

total = "200" + "110"
print(total) # 200110

変換できない文字列の場合は?

文字列が数値に変換できない文字の場合はエラーになります。
下記のコードを実行します。

total = int("テスト")

そうすると、下記のようにValueErrorになります。

ValueError: invalid literal for int() with base 10: 'テスト'

int関数に渡した文字列が、数値変換に対応していないためエラーになっています。

エラーを回避するには、数値ではない文字列を渡さないようにする必要があります。
文字列が数値に変換できるかの判定は、isdecimalメソッドを使うと良いです。

下記のように数値の文字列から、呼び出して使うことができます。

numberText = "200"
numberCheck = numberText.isdecimal()

if numberCheck :
    print(int(numberText) + 333)
else:
    print("数値ではないです")

numberText変数に”200″という数値の文字列を代入しています。
numberTextからisdecimalを使用すると、数値なのでnumberCheckにはTrueが返ります。

その後に、numberCheckがTrueだったら、int関数で変換して「333」を足しています。
今回は数値でTrueなので、足されて「533」が出力されます。

数値でない場合に、Falseになってelse配下で処理されます。

全角数値も変換できる

小ネタになりますが、全角数値も変換することができます。

print(int("123") + 100) # 223
print(int("777") + 100) # 877

最初に、全角数値の「123」をint関数で変換した後に+ 100しています。
次に「777」をint関数で変換した後に+ 100しています。

結果は「223」と「877」になります。

float関数で変換する

float関数を使うことでも、数値に変換できます。
float関数を使うと、整数ではなく浮動小数点数になります。

例えば、下記のように使います。

number = "110"

floatNumber = float(number)
print(type(floatNumber)) # <class 'float'>
print(floatNumber) # 110.0

最初にnumber変数に文字列の”110″を代入しました。

次にfloatNumber変数に、float関数を使って、数値(浮動小数点数)に変換した値を入れています。
number変数を渡しているので、numberに代入した文字列が変換されて返ってきます。

type関数にfloatNumber変数を渡すと、floatになっていることが確認できました。
floatNumber変数を出力すると、float型になったので、小数点第1位まで出力されています。

数値にできない文字列の場合は?

こちらも文字列が数値に変換できない場合にはエラーになります。
例えば、下記のような場合です。

float("hello")

実行すると、下記のようにエラーメッセージが表示されます。

ValueError: could not convert string to float: 'hello'

float関数に渡した文字列が変換できないため、エラーになっています。
float関数で変換ができるかどうかは、try catchを使って確認すると良いかと思います。

floatText = "hello"

try:
    float(floatText)
except ValueError:
    print("変換できなかった")
else:
    print("変換できた")

floatText変数に「hello」という文字列を格納しています。
tryの配下で、float関数を使って、浮動小数点数に変換しています。

変換できずにValueErrorになった場合には、ValueError配下を通ります。
変換できた場合は、elseを通ります。

上記のコードの場合だと、変換できないので、結果「変換できなかった」という文字列が出力されます。

全角数値も変換できる

こちらも小ネタになりますが、全角数値も浮動小数点数に変換できます。

number = float("123")

print(type(number)) # <class 'float'>
print(number) # 123.0

全角の「123」を変換すると、浮動小数点数になり、「123.0」が出力されました。
半角の「.」を挟むと、小数点以下も指定できます。

number = float("123.123")

print(type(number)) # <class 'float'>
print(number) # 123.123

全角数値の「123.123」からfloat関数を使用して、「123.123」という浮動小数点に変換しました。
注意点として、全角の「.」は対応していないためValueErrorになります。

終わりに

今回はPythonで文字列から数値に変換する方法について書きました。
整数の場合はint関数を使って変換して、浮動小数点にしたい場合はfloat関数を使うと変換できました。

コメント

タイトルとURLをコピーしました