Wie überprüfe ich, ob eine str (Variable) leer ist oder nicht?

78

Wie mache ich ein:

if str(variable) == [contains text]:

Bedingung?

(oder so, weil ich mir ziemlich sicher bin, dass das, was ich gerade geschrieben habe, völlig falsch ist)

Ich versuche zu überprüfen, ob a random.choiceaus meiner Liste ["",](leer) ist oder enthält ["text",].

user1275670
quelle
meinst du if str(variable) == "my text":?
Simon Bergot
Sie scheinen ein wenig verwirrt zu sein. Ich würde Ihnen empfehlen, ein Python-Tutorial zu lesen .
Rik Poggi

Antworten:

151

Sie können Ihre Zeichenfolge einfach mit der leeren Zeichenfolge vergleichen:

if variable != "":
    etc.

Aber Sie können das wie folgt abkürzen:

if variable:
    etc.

Erläuterung: A ifberechnet tatsächlich einen Wert für den logischen Ausdruck, den Sie ihm geben: Trueoder False. Wenn Sie anstelle eines logischen Tests einfach einen Variablennamen (oder eine Literalzeichenfolge wie "Hallo") verwenden, lautet die Regel: Eine leere Zeichenfolge zählt als False, alle anderen Zeichenfolgen gelten als True. Leere Listen und die Zahl Null gelten ebenfalls als falsch, und die meisten anderen Dinge gelten als wahr.

alexis
quelle
Hehe, ich verstehe irgendwie das Prinzip des If, True und False Dings. Warcraft 3 Trigger Editor: 'if (diese Einheit entspricht dieser Einheit) == True'
user1275670
Ich vermute, Sie können den == TrueTeil auch im Warcraft-Editor weglassen.
Alexis
Ja. Ich habe nie wirklich daran gedacht, aber das ist definitiv hilfreich.
user1275670
Dies ist nicht das gleiche. Mach das nicht. In [14]: a = "" In [15]: if a.replace ('', ''): ...: print 1 ...: In [16]: if a.replace ('', ' ') == "": ...: print 1 ...: 1
Brett Hardin
1
Oh, richtig, was @AndreaBergonzo gesagt hat: Wenn Sie eine Zeichenfolge mit "" vergleichen, überprüfen Sie, ob sie leer ist - was als falsch gilt.
Alexis
18

Die "Pythonic" -Methode, um zu überprüfen, ob eine Zeichenfolge leer ist, ist:

import random
variable = random.choice(l)
if variable:
    # got a non-empty string
else:
    # got an empty string
Daniel Lubarov
quelle
12

Leere Zeichenfolgen sind standardmäßig falsch:

>>> if not "":
...     print("empty")
...
empty
brice
quelle
10

Sag einfach if soder if not s. Wie in

s = ''
if not s:
    print 'not', s

Also in Ihrem speziellen Beispiel, wenn ich es richtig verstehe ...

>>> import random
>>> l = ['', 'foo', '', 'bar']
>>> def default_str(l):
...     s = random.choice(l)
...     if not s:
...         print 'default'
...     else:
...         print s
... 
>>> default_str(l)
default
>>> default_str(l)
default
>>> default_str(l)
bar
>>> default_str(l)
default
senderle
quelle
Ich verstehe es nicht. Wenn ich also "variable = random.choice (list)" mache und die Variable leer ist, kann ich einfach die Bedingung "if variable:" ausführen und ... ja, ich bekomme wirklich nichts anderes von was Sie haben geschrieben ...
user1275670
@ user1275670, es klingt wie Sie verstehen. Aber ich habe für alle Fälle ein weiteres Beispiel hinzugefügt. In kurzen ''Auswertungen zu False, also wenn Sie erhalten möchten, Truewann seine leere Zeichenfolge ist, sagen Sie if not s.
senderle
6

Für Python 3 können Sie bool () verwenden

>>> bool(None)
False
>>> bool("")
False
>>> bool("a")
True
>>> bool("ab")
True
>>> bool("9")
True
Thai Tran
quelle
Dies wäre perfekt gewesen, bool(0)kehrt aber zurückFalse
kaushal agrawal
1
@kaushalagrawal bool(0)Rückkehr Falseist für mich zu erwarten . Warum sollte es nicht?
Thai Tran
Es stimmt
6

Manchmal haben wir mehr Leerzeichen zwischen Anführungszeichen, dann verwenden Sie diesen Ansatz

a = "   "
>>> bool(a)
True
>>> bool(a.strip())
False

if not a.strip():
    print("String is empty")
else:
    print("String is not empty")
Kamran Kausar
quelle
4
element = random.choice(myList)
if element:
    # element contains text
else:
    # element is empty ''
Eumiro
quelle
3

Wie mache ich eine: if str(variable) == [contains text]:Bedingung?

Der vielleicht direkteste Weg ist:

if str(variable) != '':
  # ...

Beachten Sie, dass die if not ...Lösungen die entgegengesetzte Bedingung testen .

NPE
quelle
1

Wenn die Variable Text enthält, dann:

len(variable) != 0

davon nicht

len(variable) == 0

CESCO
quelle
1

Verwenden Sie " nicht " in if-else

x = input()

if not x:
   print("Value is not entered")
else:
   print("Value is entered")
Megha Chovatiya
quelle
0
string = "TEST"
try:
  if str(string):
     print "good string"
except NameError:
     print "bad string"
Hornhaut Valentin
quelle
4
Normalerweise empfiehlt es sich in StackOverflow, den veröffentlichten Code zu kommentieren.
König Midas
Obwohl diese Antwort wahrscheinlich richtig und nützlich ist, wird es bevorzugt, wenn Sie eine Erklärung hinzufügen, um zu erklären, wie sie zur Lösung des Problems beiträgt. Dies ist besonders in Zukunft nützlich, wenn eine Änderung (möglicherweise ohne Bezug) dazu führt, dass sie nicht mehr funktioniert und die Benutzer verstehen müssen, wie sie einmal funktioniert hat.
Erty Seidohl
Sorry, mein Englisch ist so schlecht, aber in Zukunft werde ich daran denken, meinen Beitrag zu kommentieren.
Cornea Valentin