Pythonで文字列を数値に変換する方法について書いています。
文字列から数値に変更するには、下記の関数を使います。
・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関数を使うと変換できました。
コメント