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",].


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.


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

12

Leere Zeichenfolgen sind standardmäßig falsch:

>>> if not "":
...     print("empty")
...
empty

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

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

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")

4
element = random.choice(myList)
if element:
    # element contains text
else:
    # element is empty ''

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 .


1

Wenn die Variable Text enthält, dann:

len(variable) != 0

davon nicht

len(variable) == 0


1

Verwenden Sie " nicht " in if-else

x = input()

if not x:
   print("Value is not entered")
else:
   print("Value is entered")

0
string = "TEST"
try:
  if str(string):
     print "good string"
except NameError:
     print "bad string"

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.