Ako skontrolovať, či je reťazec prázdny?

Má Python niečo ako prázdnu reťazcovú premennú, kde môžete urobiť:

if myString == string.empty:

Bez ohľadu na to, aký je najelegantnejší spôsob kontroly prázdnych reťazcov? Zdá sa mi, že tvrdé kódovanie "" zakaždým pre kontrolu prázdneho reťazca nie je až také dobré.

Riešenie

Prázdne reťazce sú "falsy", čo znamená, že sú považované za nepravdivé v boolovskom kontexte, takže to môžete jednoducho urobiť:

if not myString:

Tento spôsob je vhodnejší, ak viete, že vaša premenná je reťazec. Ak by vaša premenná mohla byť aj iného typu, potom by ste mali použiť myString == "". Ďalšie hodnoty, ktoré sú nepravdivé v boolovskom kontexte, nájdete v dokumentácii Testovanie pravdivostných hodnôt.

Komentáre (13)

Z PEP 8, v časti "Odporúčania pre programovanie":

Pre postupnosti (reťazce, zoznamy, kôpky) použite skutočnosť, že prázdne postupnosti sú nepravdivé.

Takže by ste mali používať:

if not some_string:

alebo:

if some_string:

Len na vysvetlenie, sekvencie sú vyhodnocované na False alebo True v logickom kontexte, ak sú prázdne alebo nie. Nie sú rovné hodnote False alebo True.

Komentáre (2)

Najelegantnejším spôsobom by pravdepodobne bolo jednoducho skontrolovať, či je to pravda alebo faloš, napr.:

if not my_string:

Možno však budete chcieť odstrániť biely priestor, pretože:

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

Pravdepodobne by ste však mali byť v tomto trochu explicitnejší, pokiaľ neviete s istotou, že tento reťazec prešiel nejakým druhom validácie a je reťazcom, ktorý sa dá takto testovať.

Komentáre (0)