Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【Python】文字列から数値へパースする際の落とし穴

備忘録がてらメモ。

pythonにおいて文字列→数値へパースする際、使用できる文字はちょっと特殊で全角の「1」なども含まれる。

ただ当たり前だが、それを更に文字列に変換すると半角数字になるので注意。

例: demo.py

raw_value = "1" # 全角の「1」を与える
value = int(raw_value) # intへ変換
print(str(value)) # 半角の「1」が出力される

 

結果: demo.py

1

 

ちなみに余談だが[string.isdigit()]という関数は文字列が数字であるかどうかを返し、今回のような全角の「1」などでもちゃんとTrueを返す。

ただこの関数は残念なことに、正負の記号(+や-)が含まれるとFalseを返す

(なんでやねん)

なのでバリデーションに使用する場合には、しっかりこの辺を考慮しなければならない。

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)