Pythonにおいて文字列を数字に変換することはよくありますがすべての文字列が数字に変換可能であるわけではありません。
本記事では、Pythonで文字列が数字かどうかを判定し変換する方法について解説します。
また変換できない場合の対処法も合わせて説明します。
文字列から数値に変換する
Pythonでは、int()やfloat()関数を使用して文字列を整数または浮動小数点数に変換できます。
以下はその基本的な使い方です。
整数への変換
str_number = "42"
int_number = int(str_number)
print(int_number) # 出力: 42
浮動小数点数への変換
str_float = "3.14"
float_number = float(str_float)
print(float_number) # 出力: 3.14
これらの関数は変換が成功すると対応する数値を返し失敗するとValueError例外が発生します。
文字列が数字かどうかを判定する
文字列が数字に変換可能かどうかを事前に判定することができます。
isdigit()メソッドや正規表現を使用する方法があります。
isdigit()メソッドの使用
def is_numeric(input_str):
return input_str.isdigit()
# 使用例
numeric_str = "123"
non_numeric_str = "abc"
print(is_numeric(numeric_str)) # 出力: True
print(is_numeric(non_numeric_str)) # 出力: False
正規表現を使用する方法
import re
def is_numeric_regex(input_str):
return bool(re.match(r'^[+-]?\d+(\.\d+)?$', input_str))
# 使用例
numeric_str = "123"
non_numeric_str = "3.14.15"
print(is_numeric_regex(numeric_str)) # 出力: True
print(is_numeric_regex(non_numeric_str)) # 出力: False
これらの方法を使用して変換可能かどうかを事前に確認できます。
広告
変換できない時のために例外処理
文字列が数字に変換できない場合、例外処理を行うことが一般的です。
以下はその例です。
def convert_to_int(input_str):
try:
result = int(input_str)
return result
except ValueError:
print(f"Error: {input_str} は整数に変換できません。")
return None
# 使用例
numeric_str = "42"
non_numeric_str = "abc"
print(convert_to_int(numeric_str)) # 出力: 42
print(convert_to_int(non_numeric_str)) # 出力: エラーメッセージ
tryブロック内で変換を試み、except ValueErrorで変換できない場合のエラー処理を行います。
変換できない場合にはNoneを返すなど適切な処理を行ってください。
広告
まとめ
本記事ではPythonで文字列を数字に変換する方法と変換できない場合の対処法について解説しました。
int()やfloat()関数を使用して変換する際にはValueError例外をキャッチしてエラー処理を行うことが重要です。
またisdigit()メソッドや正規表現を使用して変換前に文字列が数字であるかどうかを確認することが良いプラクティスです。