【Python】文字列を数値に変換する方法

Pythonで文字列を数値に変換する方法について解説します。
目次
文字列の数値変換
プログラミングではよく数値文字列を実際に数値に変換して計算をしたくなる場合があります。本記事では、文字列を数値に変換する各種方法について説明します。
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します。unicoddata.digitに対象となる数値文字列を渡すことで数値に変換できます。
ただし、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します。unicoddata.numericに対象となる数値文字列を渡すことで数値に変換できます。
上記例のようにunicodedata.numericでは、漢数字やローマ数字も変換できます。なお、numeric関数はfloatの値に変換されます。digit関数では返却値がintであったため方が違う点は注意しておきましょう。
まとめ
Pythonで文字列を数値に変換する方法について解説しました。
通常の数字文字列をintやfloatに変換する方法の他、上付き数字/下付き数字/漢数字/ローマ数字に関する数値変換も紹介しています。
プログラミングではよく数値文字列を実際に数値に変換して計算をしたくなる場合がありますので方法は覚えておくようにしましょう。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。







