ตรวจสอบว่าสตริงอยู่บนตัวพิมพ์เล็กหรือตัวพิมพ์เล็กใน Python


92

ฉันต้องการจัดประเภทรายการสตริงใน Python ขึ้นอยู่กับว่าเป็นตัวพิมพ์ใหญ่ตัวพิมพ์เล็กหรือตัวพิมพ์เล็กผสม

ฉันจะทำเช่นนี้ได้อย่างไร?


1
พิจารณาความเป็นไปได้ของ (1) อักขระที่ไม่ใช่ตัวอักษรและ (2) ตัวอักษรที่ไม่มีตัวพิมพ์เลย
John Machin

คำตอบ:


173

มี "is method" อยู่หลายสตริง islower()และisupper()ควรตอบสนองความต้องการของคุณ:

>>> 'hello'.islower()
True

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

นี่คือตัวอย่างของวิธีการใช้วิธีการเหล่านั้นเพื่อจัดประเภทรายการสตริง:

>>> 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']

สวัสดี. ขอบคุณสำหรับคำตอบสั้น ๆ แต่ฉันจะจำแนกคำที่เป็นตัวพิมพ์ใหญ่ได้อย่างไร? ตัวอย่างเช่น: 'คำผสม' ดูเหมือนว่าตัวอย่างที่ 3 จะเหมาะกับคำผสมที่เป็นไปได้ทั้งหมดเช่น "mIxEd WoRD" ..
Swadhikar

10
'hello'.istitle ()
Stephen

1

ฉันต้องการพูดถึงการใช้reโมดูลสำหรับสิ่งนี้ โดยเฉพาะอย่างยิ่งในกรณีที่มีความอ่อนไหว

เราใช้ตัวเลือกre.IGNORECASEในขณะที่รวบรวมนิพจน์ทั่วไปเพื่อใช้ในสภาพแวดล้อมการผลิตที่มีข้อมูลจำนวนมาก

>>> 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']

อย่างไรก็ตามพยายามใช้ตัวinดำเนินการสำหรับการเปรียบเทียบสตริงตามรายละเอียดในโพสต์นี้เสมอ

เร็วขึ้น - ดำเนินการ - จับคู่ใหม่หรือ str

นอกจากนี้ยังมีรายละเอียดในหนังสือที่ดีที่สุดเล่มหนึ่งในการเริ่มเรียนรู้ python ด้วย

สำนวน - หลาม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.