「Pythonの文字列を数値に変換する方法」の版間の差分
提供: Python入門
(ページの作成:「Python の文字列を数値に変換する方法をまとめました。文字列をそのまま数値だと思って扱うと、文字列として計算した結果と...」) |
(相違点なし)
|
2018年4月1日 (日) 10:57時点における版
Python の文字列を数値に変換する方法をまとめました。文字列をそのまま数値だと思って扱うと、文字列として計算した結果と数値として計算した結果で異なる場合が出てきてしまいます。
読み方
- int
- いんと
- long
- ろんぐ
- float
- ふろーと
概要
Python には、データに型があります。ほかのスクリプト言語でも同様の問題があるかもしれませんが、文字列を数字だと思って計算すると、予期せぬ結果になって戸惑うこともあるかと思います。
Python の数値型
Python には、以下の数値の型があります。
- int
- float
- long
- complex
Python の文字列を数値に変換する方法
str に数字が入っている前提です。
i = int(str)
f = float(str)
l = long(str)
どういった場合におかしくなるのか
数値データの入っている CSV ファイルを csv モジュールでロードしたときに、データが文字列として入ってきます。
以下のコードがサンプルコートです。
import csv f = open("foo.csv", "r") reader = csv.reader(f, delimiter=',') for row in reader: if (row[0] < row[1]): 処理A
row[0] に 文字列 100.39, row[1]に 文字列 99,22 の場合に、本来であれば、処理Aが実行しない想定だが、文字列として比較すると if 文が真になり、処理Aを実行してしまいます。
以下のコードを実行すると
a = "100.39" b = "99.22" print (a < b)
下記のように
True
となります。
データが想定外の型で扱っているので、想定外のことが起きるのは当たり前なのですが、 プログラマの想定外のことがおきてしまいます。
ではどうなっていればよかったと言えば、 このサンプルでは
a = float("100.39") b = float("99.22") print (a < b)
となっていれば、 a も b も float 型として扱われるので、(a < b) は、False の結果が得られます。
型の調べ方
変数が何の型として扱われているか調べる方法は、 type を使用します。
print type(str)