Pertanyaan Cara paling elegan untuk memeriksa apakah string kosong dengan Python?


Apakah Python memiliki sesuatu seperti variabel string kosong yang dapat Anda lakukan ?:

if myString == string.empty:

Apa pun cara paling elegan untuk memeriksa nilai string kosong? Saya menemukan hard coding "" setiap waktu untuk memeriksa string kosong tidak begitu bagus.


925
2018-03-05 20:09


asal


Jawaban:


String kosong "falsy" yang berarti mereka dianggap salah dalam konteks Boolean, jadi Anda bisa melakukan ini:

if not myString:

Ini adalah cara yang disukai jika Anda tahu bahwa variabel Anda adalah string. Jika variabel Anda juga bisa menjadi beberapa jenis lain maka Anda harus menggunakannya myString == "". Lihat dokumentasi di Uji Nilai Kebenaran untuk nilai lain yang salah dalam konteks Boolean.


1361
2018-03-05 20:10



Dari PEP 8, dalam Bagian "Pemrograman Rekomendasi":

Untuk urutan, (string, daftar, tupel), gunakan fakta bahwa urutan kosong adalah salah.

Jadi Anda harus menggunakan:

if not some_string:

atau:

if some_string:

Hanya untuk memperjelas, urutannya dievaluasi untuk False atau True dalam konteks Boolean jika mereka kosong atau tidak. Mereka tidak sama untuk False atau True.


286
2018-03-05 20:12



Cara yang paling elegan mungkin hanya untuk memeriksa apakah itu benar atau salah, misalnya:

if not my_string:

Namun, Anda mungkin ingin menghapus ruang putih karena:

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

Anda mungkin harus sedikit lebih eksplisit dalam hal ini, kecuali Anda tahu pasti bahwa string ini telah melewati beberapa jenis validasi dan merupakan string yang dapat diuji dengan cara ini.


154
2018-03-05 20:11



Saya akan menguji ketidaksamaan sebelum pengupasan. Juga, saya akan menggunakan fakta bahwa string kosong adalah False (atau Falsy). Pendekatan ini mirip dengan StringUtils.isBlank Apache atau Strings Guava.isNullOrEmpty

Ini adalah apa yang akan saya gunakan untuk menguji apakah string tidak ada ATAU Kosong ATAU Kosong:

def isBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return False
    #myString is None OR myString is empty or blank
    return True

Dan, sebaliknya untuk menguji apakah string tidak None NOR Empty NOR Blank:

def isNotBlank (myString):
    if myString and myString.strip():
        #myString is not None AND myString is not empty or blank
        return True
    #myString is None OR myString is empty or blank
    return False

Lebih banyak bentuk ringkas dari kode di atas:

def isBlank (myString):
    return not (myString and myString.strip())

def isNotBlank (myString):
    return bool(myString and myString.strip())

54
2017-07-02 14:44



Saya pernah menulis sesuatu yang mirip dengan jawaban Bartek dan javascript yang terinspirasi:

def isNotEmpty(s):
    return bool(s and s.strip())

Uji:

print isNotEmpty("")    # False
print isNotEmpty("   ") # False
print isNotEmpty("ok")  # True
print isNotEmpty(None)  # False

25
2018-01-16 11:02



Tes string kosong atau kosong (cara yang lebih pendek):

if myString.strip():
    print("it's not an empty or blank string")
else:
    print("it's an empty or blank string")

11
2018-05-09 07:45



Jika Anda ingin membedakan antara string kosong dan nol, saya akan menyarankan menggunakan if len(string), jika tidak, saya akan menyarankan menggunakan hanya if string seperti yang orang lain katakan. Peringatan tentang string yang penuh dengan spasi masih berlaku, jadi jangan lupa strip.


9
2018-03-05 20:20