2013-09-04 26 views
8

Python'u öğrenme ve biraz takılıyorum.Python Dize Bağla veya Yok

int(stringToInt) eşdeğeri için bir değişken ayarlamaya çalışıyorum veya dize boşsa None olarak ayarlanmış.

variable = int(stringToInt) or None yapmayı denedim, ancak dize boşsa yalnızca Yok olarak ayarlamak yerine hata verir.

Bu konuda herhangi bir yol biliyor musunuz?

+3

'boş' tanımlayın: – dawg

cevap

25

, bu ile gitmek:

variable = int(stringToInt) if stringToInt else None 

Bu boş değil AND "sayısal" yalnızca int(stringToInt) için variable atar. Örneğin, stringToInt'mystring' ise, bir ValueError yükseltilecektir. bazı seçenekler İşte

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

Bu acemi bir acemi için ayrıntılı açıklar. – Marcin

8

Kullanımı o bir istisna oluşturur gerçeği:

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

Bu, diğer genel hatalar için None için variable bağlama hoş yan etkisi vardır: örneğin, stringToInt='ZZTop'. Eğer teşebbüs varmış gibi tek astar istiyorsanız

+0

Sanırım bu çözüm, dizenin basamaklı olmayan karakterler içerdiği durumları ele alacağı için muhtemelen en iyisidir. –

1

şunlardır:

bir jeneratör ifadesini yapmıyoruz olarak bir deneyin-haricinde kullanmak, bu kadar uzun, ValueError s önlemek için

yakalamak istisna ve idare: o, gerçekten bu istisnai değil

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

bunu hesaplama:

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

'all()' öğesine ihtiyacınız yok. Eğer stringToInt.isdigit(): 'yeterli ise. –

+0

@ Robᵩ, teşekkürler. İyi bir nokta. Python içinde –

+0

istisnalar dışında onları kaçırmayın ..... –

5
bu en açık yolu olduğunu düşünüyorum? '' 'Boş mu? Herhangi bir beyaz alan mı?
+1

Bu bir isdigit() olmadığı için stringToInt'ın None olduğu yerde çalışmaz – Damian