私は、.csvファイルを読み込んで各値をリスト[list] [x] [y]に格納するPythonスクリプトを持っています。私はこれに何ら問題はありません。Pythonリストの項目がint/numberであるかどうかを確認します。
これらのフィールドのいずれかをチェックして、数字(整数)かどうかを確認します。
私はprint type(list[i][0])
を実行すると、それは価値が以下の文はリストを反復for
ループでそう、私がやって考えていたが、チェックをしているしている場合は100
ザ・言っているにもかかわらず<type 'str'>
を返します。
if type(list[i][0] == types.IntType):
True
else:
False
は、したがって、これは私が
# check if a value is entered
if list[i][0] != '':
if isinstance(int(list[i][0]), int):
True
else:
False
else
False
にそれを変更した、しかしそれはPEP8に眉をひそめていますので、私は
isinstance()
を使用する必要があり、動作します
しかし、文字列をintに変換しようとすると(ユーザーが文字列を入力した場合)問題にぶつかります。
どうすればこの問題を解決できますか?しかし、単純な問題のように思えますが、私はPythonには初めてのので、これに対処するきれいで効率的な方法が不思議でした。リストに値を格納する前に、その値がintかどうかを確認する必要がありますか?
私はPython2を使用しています。
おかげ
編集:私は試し例外キャッチ周りisinstance()
チェックをラップしているしかし、私は何かがint型であるかどうかだけをチェックするためにこれに頼る必要はありませんように感じますか?これを行うためのより純粋な方法があるかどうか不思議です。
編集:私は前述のようにisdigit
を使用しましたが、私は否定的な結果を得ていました。
つまりこのデータセットが指定されています。リスト[0] [0] = 123、リスト[1] [0] =
for i in range(0, 1):
if (list[i][0]).isdigit:
tempInt = list[i][0]
print type(tempInt)
print 'True: ' + tempInt
else:
tempInt = 1
print 'False: ' + tempInt
結果asdasd:あなたはこれでそれを確認することができます
<type 'str'>
True: 123
<type 'str'>
True: asdasd
重複が間違っていると思います。確かに '' 123 "を' 'somestring.isdigit'でチェックする' 123 'に変換するか、' int(somestring) 'で変換するかを確かめてください。 –
@ReutSharabaniはい、あなたは正しいです、その重複した質問は私の問題に関連していません – Brendan
私はその質問の答えを通して読むことをお勧めします。あなたは[isdigit()を特に言及するもの]を見つけるでしょう(http://stackoverflow.com/a/23464130/2617068)。 – TigerhawkT3