Periksa apakah string adalah huruf besar, kecil, atau campuran dengan Python

92

Saya ingin mengklasifikasikan daftar string dengan Python tergantung pada apakah itu huruf besar, huruf kecil, atau huruf campuran

Bagaimana saya bisa melakukan ini?

shreyas
sumber
1
Pertimbangkan kemungkinan (1) karakter yang bukan huruf dan (2) huruf yang tidak memiliki case sama sekali.
John Machin

Jawaban:

173

Ada sejumlah "metode is" pada string. islower()dan isupper()harus memenuhi kebutuhan Anda:

>>> 'hello'.islower()
True

>>> [m for m in dir(str) if m.startswith('is')]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']

Berikut adalah contoh cara menggunakan metode tersebut untuk mengklasifikasikan daftar string:

>>> words = ['The', 'quick', 'BROWN', 'Fox', 'jumped', 'OVER', 'the', 'Lazy', 'DOG']
>>> [word for word in words if word.islower()]
['quick', 'jumped', 'the']
>>> [word for word in words if word.isupper()]
['BROWN', 'OVER', 'DOG']
>>> [word for word in words if not word.islower() and not word.isupper()]
['The', 'Fox', 'Lazy']
Raymond Hettinger
sumber
Hai. terima kasih atas jawaban singkatnya. Tetapi bagaimana saya mengklasifikasikan kata-kata yang dikapitalisasi? Misalnya: 'Kata Campuran'. Tampaknya contoh ke-3 cocok untuk semua kemungkinan kombinasi kata campuran, contoh: "mIxEd WoRD" ..
Swadhikar
10
'hello'.istitle ()
Stephen
1

Saya ingin memberikan teriakan untuk menggunakan remodul untuk ini. Khususnya dalam kasus sensitivitas huruf.

Kami menggunakan opsi re.IGNORECASE saat menyusun regex untuk digunakan dalam lingkungan produksi dengan data dalam jumlah besar.

>>> import re
>>> m = ['isalnum','isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'ISALNUM', 'ISALPHA', 'ISDIGIT', 'ISLOWER', 'ISSPACE', 'ISTITLE', 'ISUPPER']
>>>
>>>
>>> pattern = re.compile('is')
>>>
>>> [word for word in m if pattern.match(word)]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']

Namun cobalah untuk selalu menggunakan inoperator untuk perbandingan string seperti yang dijelaskan dalam posting ini

lebih cepat-operasi-ulang-pertandingan-atau-str

Juga dirinci dalam salah satu buku terbaik untuk mulai belajar python

idiomatic-python

eleijonmarck
sumber