Kiểm tra xem chuỗi là chữ hoa, chữ thường hay chữ hoa hỗn hợp trong Python


92

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?


1
Hãy xem xét khả năng xảy ra (1) ký tự không phải là chữ cái và (2) ký tự không có chữ cái nào cả.
John Machin

Câu trả lời:


173

Có một số "là phương thức" trên chuỗi. islower()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']

Chào. cảm ơn vì câu trả lời ngắn gọn. Nhưng làm cách nào để phân loại các từ được viết hoa? Ví dụ: 'Từ hỗn hợp'. Dường như ví dụ thứ 3 phù hợp với tất cả các kết hợp có thể các từ hỗn hợp, ví dụ: "trộn từ" ..
Swadhikar

10
'hello'.istitle ()
Stephen

1

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

idiomatic-python

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.