Má Python něco jako prázdnou řetězcovou proměnnou, kde můžete udělat:
if myString == string.empty:
Jaký je nejelegantnější způsob kontroly prázdných řetězců? Zdá se mi, že tvrdé kódování ""
pokaždé pro kontrolu prázdného řetězce není tak dobré.
Prázdné řetězce jsou "falsy", což znamená, že jsou v booleovském kontextu považovány za false, takže to můžete udělat:
if not myString:
Tento způsob je vhodnější, pokud víte, že vaše proměnná je řetězec. Pokud by vaše proměnná mohla být i jiného typu, pak byste měli použít myString == ""
. Další hodnoty, které jsou nepravdivé v booleovském kontextu, najdete v dokumentaci Testování pravdivostních hodnot.
Z PEP 8, v části "Programovací doporučení":
Pro posloupnosti (řetězce, seznamy, tuply) použijte skutečnost, že prázdné posloupnosti jsou false.
Měli byste tedy používat:
if not some_string:
nebo:
if some_string:
Jen pro upřesnění, sekvence jsou vyhodnoceny na False
nebo True
v booleovském kontextu, pokud jsou prázdné nebo ne. Nejsou rovny hodnotám False
nebo True
.
Nejelegantnějším způsobem by pravděpodobně bylo jednoduše zkontrolovat, zda je to pravda nebo faleš, např.:
if not my_string:
Možná však budete chtít odstranit bílé místo, protože:
>>> bool("")
False
>>> bool(" ")
True
>>> bool(" ".strip())
False
Pravděpodobně byste však měli být v tomto ohledu trochu explicitnější, pokud si nejste jisti, že tento řetězec prošel nějakým druhem validace a je to řetězec, který lze tímto způsobem testovat.