2013-09-04 5 views
8

Pythonを少し勉強しています。Python String to Int or None

変数をint(stringToInt)に設定しようとしています。文字列が空の場合はNoneに設定しています。

私はvariable = int(stringToInt) or Noneをしようとしましたが、文字列が空の場合は、[なし]に設定するのではなくエラーになります。

これを回避する方法はありますか?

+3

が '空' の定義: – dawg

答えて

25

あなたが試みられてきたようにあなたはワンライナーをしたい場合は、これで行く:

variable = int(stringToInt) if stringToInt else None 

これが空でなく、「数字」である場合にのみint(stringToInt)variableを割り当てます。例えば、stringToInt'mystring'である場合、ValueErrorが発生します。

のtry-除いて使用し、限りあなたはジェネレータ式を行っていないとして、ValueErrorのを避けるために:ここで

try: 
    variable = int(stringToInt) 
except ValueError: 
    variable = None 
+4

これは初心者のために詳細に説明します。 – Marcin

8

は、例外を発生させるという事実を使用する:stringToInt='ZZTop'、例えば:

try: 
    variable = int(stringToInt) 
except ValueError: 
    variable = None 

これは、他の一般的なエラーのためNonevariable結合の快適副作用を有します。

+0

文字列に数字以外の文字も含まれている状況を処理するので、このソリューションはおそらく最高のものだと思います。 –

1

は、いくつかのオプションがあります

は例外をキャッチし、それを処理します。それは、本当にその例外ではないのです

try: 
    variable = int(stringToInt) 
except ValueError, e: 
    variable = None 

それを占める:

variable = int(stringToInt) if stringToInt.isdigit() else None 
+1

'all()'は必要ありません。 if stringToInt.isdigit(): 'で十分です。 –

+0

@Robᵩ、ありがとう。いい視点ね。 –

+0

あなたはそれらを除いて例外をキャッチしません..... –

5
私は、これは明確な方法であると思いますか? `` ``は空ですか?すべての空白?
+1

これはisdigit()を持たないため、stringToIntがNoneの場合は動作しません。 – Damian