เมื่อต้องการเรียงลำดับสตริงตามตัวเลขที่อยู่ในสตริง สามารถใช้ regular expression และ re.findall() ได้
ตัวอย่าง
import re
def my_num_sort(my_str):
return list(map(int, re.findall(r'\d+', my_str)))[0]
my_list = ["pyth42on", '14is', '32fun', '89to', 'lea78rn']
print("The list is :")
print(my_list)
my_list.sort(key=my_num_sort)
print("The result is :")
print(my_list)
ผลลัพธ์
The list is : ['pyth42on', '14is', '32fun', '89to', 'lea78rn'] The result is : ['14is', '32fun', 'pyth42on', 'lea78rn', '89to']
คำอธิบาย
นำเข้าโมดูล
reกำหนดฟังก์ชัน
my_num_sortใช้re.findall(r'\d+', my_str)หาตัวเลขทุกกลุ่มในสตริง แปลงเป็น int เอาตัวแรกคืนค่ากำหนดลิสต์สตริงที่มีตัวเลขฝังอยู่ แสดงผล
ใช้
sort(key=my_num_sort)เรียงตามตัวเลขที่พบแสดงผลลัพธ์ที่เรียงแล้ว