Πώς να ελέγξετε αν η συμβολοσειρά είναι κενή;

Έχει η Python κάτι σαν μια κενή μεταβλητή συμβολοσειράς όπου μπορείτε να κάνετε:

if myString == string.empty:

Ανεξάρτητα από αυτό, ποιος είναι ο πιο κομψός τρόπος για να ελέγξετε για κενές τιμές συμβολοσειράς; Βρίσκω ότι ο σκληρός προγραμματισμός "" κάθε φορά για τον έλεγχο μιας κενής συμβολοσειράς δεν είναι τόσο καλός.

Λύση

Οι κενές συμβολοσειρές είναι "falsy" που σημαίνει ότι θεωρούνται ψευδείς σε ένα πλαίσιο Boolean, οπότε μπορείτε να κάνετε αυτό:

if not myString:

Αυτός είναι ο προτιμώμενος τρόπος αν γνωρίζετε ότι η μεταβλητή σας είναι μια συμβολοσειρά. Αν η μεταβλητή σας θα μπορούσε να είναι και κάποιος άλλος τύπος τότε θα πρέπει να χρησιμοποιήσετε myString == "". Ανατρέξτε στην τεκμηρίωση Truth Value Testing για άλλες τιμές που είναι ψευδείς σε περιβάλλοντα Boolean.

Σχόλια (13)

Από το PEP 8, στην ενότητα "Programming Recommendations":

Για ακολουθίες, (συμβολοσειρές, λίστες, πλειάδες), χρησιμοποιήστε το γεγονός ότι οι κενές ακολουθίες είναι ψευδείς.

Επομένως, θα πρέπει να χρησιμοποιήσετε:

if not some_string:

ή:

if some_string:

Απλά για να διευκρινίσουμε, οι ακολουθίες αξιολογούνται σε False ή True σε ένα Boolean πλαίσιο αν είναι κενές ή όχι. Δεν είναι όχι ίσες με False ή True.

Σχόλια (2)

Ο πιο κομψός τρόπος θα ήταν πιθανώς να ελέγχετε απλά αν είναι αληθές ή ψεύτικο, π.χ.:

if not my_string:

Ωστόσο, μπορεί να θέλετε να αφαιρέσετε το λευκό διάστημα επειδή:

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

Ωστόσο, μάλλον θα πρέπει να είστε λίγο πιο σαφείς σε αυτό, εκτός αν γνωρίζετε με βεβαιότητα ότι αυτή η συμβολοσειρά έχει περάσει κάποιο είδος επικύρωσης και είναι μια συμβολοσειρά που μπορεί να ελεγχθεί με αυτόν τον τρόπο.

Σχόλια (0)