文字列

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

【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する必要があります。

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関数でも変換できますが、返却値の型が違う点は注意しましょう。