Büyük harf, küçük harf veya karışık harf olmasına bağlı olarak Python'da bir dize listesi sınıflandırmak istiyorum
Bunu nasıl yapabilirim?
Yanıtlar:
Dizelerde bir dizi "is yöntemi" vardır. islower()ve isupper()ihtiyaçlarınızı karşılamalıdır:
>>> 'hello'.islower()
True
>>> [m for m in dir(str) if m.startswith('is')]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
Dizelerin listesini sınıflandırmak için bu yöntemlerin nasıl kullanılacağına dair bir örnek:
>>> 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']
Bunun için remodülü kullanmak için bir not vermek istiyorum . Özellikle büyük / küçük harf duyarlılığı durumunda.
Büyük miktarda verinin bulunduğu üretim ortamlarında kullanılmak üzere regex'i derlerken re.IGNORECASE seçeneğini kullanıyoruz .
>>> 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']
Bununla birlikte in, bu yayında ayrıntılı olarak açıklandığı gibi, dize karşılaştırması için her zaman operatörü kullanmaya çalışın
daha hızlı işlem yeniden eşleştirme veya str
Ayrıca python öğrenmeye başlamak için en iyi kitaplardan birinde ayrıntılı olarak