ภาพรวม
แปลงสตริงที่มี suffix เช่น "5Cr", "7M", "9B" ให้เป็นตัวเลขจริง โดยใช้ dictionary mapping suffix -> multiplier
Suffix Mapping
| Suffix | ชื่อ | ค่า |
| K | Thousand | 1,000 |
| M | Million | 1,000,000 |
| B | Billion | 1,000,000,000 |
| Tr | Trillion | 1,000,000,000,000 |
| Cr | Crore (อินเดีย) | 10,000,000 |
| L | Lakh (อินเดีย) | 100,000 |
ตัวอย่างโค้ด
my_list = ["5Cr", "7M", "9B", "12L", "20Tr", "30K"]
print("The list is:", my_list)
value_dict = {
"M": 1_000_000,
"B": 1_000_000_000,
"Cr": 10_000_000,
"L": 100_000,
"K": 1_000,
"Tr": 1_000_000_000_000
}
my_result = []
for element in my_list:
for suffix, multiplier in value_dict.items():
if suffix in element:
num = float(element.replace(suffix, ""))
my_result.append(num * multiplier)
break
print("The resultant values:", my_result)
ผลลัพธ์
The list is: ['5Cr', '7M', '9B', '12L', '20Tr', '30K']
The resultant values: [50000000.0, 7000000.0, 9000000000.0, 1200000.0, 20000000000000.0, 30000.0]
เวอร์ชันที่ทันสมัยกว่า (Regex)
import re
def parse_suffix(s):
match = re.match(r'([\d.]+)([A-Za-z]+)', s)
if not match:
return None
num, suffix = match.groups()
return float(num) * value_dict.get(suffix, 1)
results = [parse_suffix(s) for s in my_list]
ข้อดีของ Regex
- จัดการ suffix หลายตัวอักษรได้ถูกต้อง (เช่น "Cr" vs "C")
- รองรับทศนิยม: "1.5M" -> 1,500,000
- แยกตัวเลขและ suffix ชัดเจน