Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – แปลง Suffix เงิน/หน่วย (K, M, B, Tr, Cr, L) ให้เป็นค่าตัวเลข

ภาพรวม

แปลงสตริงที่มี suffix เช่น "5Cr", "7M", "9B" ให้เป็นตัวเลขจริง โดยใช้ dictionary mapping suffix -> multiplier

Suffix Mapping

ตัวอย่างโค้ด

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 ชัดเจน
Suffixชื่อค่า
KThousand1,000
MMillion1,000,000
BBillion1,000,000,000
TrTrillion1,000,000,000,000
CrCrore (อินเดีย)10,000,000
LLakh (อินเดีย)100,000