Atom's tech blog

Pythonを勉強しよう! 文字列から数値への変換

f:id:iAtom:20201106203424j:plain

Python初心者の備忘録.....

今回は数値の文字列から数値へ変換することを勉強してみます。

数字の文字列を整数(int)、浮動小数点(floar)へ変換

Pythonで数字の文字列を整数値にはint()、小数点ありの数字文字列を浮動小数点に変換するにはfloat()を使用します。

Pythonは整数値と文字列の数字は直接演算できません。

そこで文字列の数字を整数値に変換することで演算が可能となります。

print(int('500'))
print(float('100.1'))
print(float('500'))

# 500
# 100.1
#500.0

エラーになるケース

文字列に小数点がある場合

print(int('500.1'))

#raceback (most recent call last):
#  File "<stdin>", line 1, in <module>
#ValueError: invalid literal for int() with base 10: '500.1'

文字列のため、数字間に「,」(カンマ)が入るケースがあるので、これもエラーとなる

print(int('50,010'))

#raceback (most recent call last):
#  File "<stdin>", line 1, in <module>
#ValueError: invalid literal for int() with base 10: '50,010'

回避するには文字列から「,」カンマを削除しよう。 replace()メソッドで削除(空に置換)変換可能です。

print(int('50,010'.replace(',', '')))

#50010

2、8、10、16進数文字列を10進数に変換

前回も説明を書いていたが再度。こちらもint()を使用することで可能です。

第一パラメータには2、8、10、16進数の文字列。第二パラメータには基数「2、8、10、16」

# 変数xに文字列の代入
x = '100'
# 2進数に変換し、結果を出力
print(int(x,2))
# 8進数に変換し、結果を出力
print(int(x,8))
# 10進数に変換し、結果を出力
print(int(x,10))
# 16進数に変換し、結果を出力
print(int(x,16))

#4
#64
#100
#256

下記の16進数の文字列の場合は、大文字小文字どちらでも変換可能で、「0x」の文字列でも問題なし。

# 変数に文字列の代入
big = 'FF'
small ='ff'
str_hex = '0xff' 
# 16進数に変換し、結果を出力
print(int(big,16))
print(int(small,16))
print(int(str_hex,16))
print(int(str_hex,0))

# 255
# 255
# 255
# 255

数字の文字列を変換して演算

演算するときに数値と数値の演算は可能ですが、数値と文字列の演算はできません。

よく使われるケースは、ログに出力した結果が数値の文字列の場合があり、そのままの取得したデータで演算するとエラーが発生します。

その場合は、文字列を数値に変換して演算を行います。

下記サンプルソースはlog_valueが文字列のため、int()で10進数の整数に変換し、forでループして演算しています。

log_value = '1'
for count in range(5):
     print( count + int(log_value,10))

#1
#2
#3
#4
#5