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

PythonPython

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

・int関数
・float関数

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

PR

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」になります。

PR

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関数を使うと変換できました。

コメント

Ads Blocker Image Powered by Code Help Pro

広告ブロッカーが検出されました。

ブラウザの拡張機能を使用して広告ブロックをしていることが確認できました。 ブラウザの広告ブロッカー機能を無効にしていただくか、codelikes.comをホワイトリストに追加し、更新をクリックしてください。 お手数ですが、よろしくお願いします🙇‍♂️
タイトルとURLをコピーしました