Tôi muốn phân loại danh sách chuỗi bằng Python tùy thuộc vào việc chúng là chữ hoa, chữ thường hay chữ hoa hỗn hợp
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Có một số "là phương thức" trên chuỗi. islower()và isupper()phải đáp ứng nhu cầu của bạn:
>>> 'hello'.islower()
True
>>> [m for m in dir(str) if m.startswith('is')]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
Dưới đây là một ví dụ về cách sử dụng các phương pháp đó để phân loại danh sách các chuỗi:
>>> 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']
Tôi muốn đưa ra lời cảm ơn về việc sử dụng remô-đun cho việc này. Đặc biệt trong trường hợp phân biệt chữ hoa chữ thường.
Chúng tôi sử dụng tùy chọn re.IGNORECASE trong khi biên dịch regex để sử dụng trong môi trường sản xuất với lượng lớn dữ liệu.
>>> 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']
Tuy nhiên, hãy cố gắng luôn sử dụng intoán tử để so sánh chuỗi như chi tiết trong bài đăng này
nhanh hơn-hoạt-động-lại-khớp-hoặc-str
Cũng được trình bày chi tiết trong một trong những cuốn sách hay nhất để bắt đầu học python với