ฉันต้องการจัดประเภทรายการสตริงใน Python ขึ้นอยู่กับว่าเป็นตัวพิมพ์ใหญ่ตัวพิมพ์เล็กหรือตัวพิมพ์เล็กผสม
ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันต้องการจัดประเภทรายการสตริงใน Python ขึ้นอยู่กับว่าเป็นตัวพิมพ์ใหญ่ตัวพิมพ์เล็กหรือตัวพิมพ์เล็กผสม
ฉันจะทำเช่นนี้ได้อย่างไร?
คำตอบ:
มี "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']
ฉันต้องการพูดถึงการใช้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 ด้วย