Pythonで文字列を数値に変換する方法について解説します。
Contents
文字列の数値変換
intへの変換
文字列をintへ変換する場合は、以下のようにintの引数に対象とする数値文字列を渡します。
# intへ変換 num1 = int('100') print(num1) num2 = int('100') print(num2)
【実行結果】 100 100
なお、上記の例のように全角数値であってもint型に変換することが可能です。
floatへの変換
文字列をfloatへ変換する場合は、以下のようにfloatの引数に対象とする数値文字列を渡します。
# floatへ変換 num1 = float('123.456') print(num1) num2 = float('123.456') print(num2)
【実行結果】 123.456 123.456
なお、上記の例のように全角数値であってもfloat型に変換することが可能です。
上付き数字/下付き数字/漢数字/ローマ数字の数値変換
上記で見てきたint、floatへの変換方法では、上付き数字(例:⁰)、下付き数字(例:₁)、漢数字(例:弐)、ローマ数字(例:Ⅲ)等の数値を変換することができません。
このような数値を変換する場合は、unicodedataモジュールの関数を使用することで対応できます。例えばユーザーがシステムに漢数字やローマ数字を入れた場合でも数値に変えて後続処理で使用することができます。
unicodedata.digitによる変換
上付き数字や下付き数字を数値変換したい場合には、unicodedataモジュールのdigit関数を使用することができます。
import unicodedata # unicodedata.digitを用いた変換 # 上付き数字/下付き数字の変換 num1 = unicodedata.digit('⁰') print(num1) num2 = unicodedata.digit('₁') print(num2)
【実行結果】 0 1
unicodedataを使用する場合には、importする必要があります。
unicodedata.digitは、漢数字やローマ数字を変換することができません。漢数字やローマ数字の変換には後述のnumeric関数を使用します。なお、digitはintの値に変換されます。
unicodedata.numericによる変換
上付き数字や下付き数字だけではなく、漢数字やローマ数字も数値変換したい場合には、unicodedataモジュールのnumeric関数を使用することができます。
import unicodedata # unicodedata.numericを用いた変換 # 上付き数字/下付き数字の変換 num1 = unicodedata.numeric('⁰') print(num1) num2 = unicodedata.numeric('₁') print(num2) # 漢数字の変換 num3 = unicodedata.numeric('弐') print(num3) # ローマ数字の変換 num4 = unicodedata.numeric('Ⅲ') print(num4)
【実行結果】 0.0 1.0 2.0 3.0
unicodedataを使用する場合には、importする必要があります。
上記の例のようにunicodedata.numericは、漢数字やローマ数字を変換できます。
なお、numeric関数はfloatの値に変換されます。上付き数字や下付き数字は、digit関数でもnumeric関数でも変換できますが、返却値の型が違う点は注意しましょう。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。