"""
处理全角点号->半角点号
处理逗号分隔的数字： 你的当前代码无法处理包含逗号的数字，例如 "1,000元"。可以在提取数字之前移除逗号。
优先级处理： 当前代码优先匹配“万元”然后是“元”。根据需求，可能需要调整优先级或提取所有匹配。
处理缩写： 如果输入可能使用“万”而不是“万元”，需要添加相应的匹配模式。
处理没有匹配的情况： 当没有匹配到金额时，返回一个默认值或提示信息。
"""
import re

def format_amount(original_amount):
    """
    格式化金额字符串

    参数:
        original_amount (str): 输入的文本字符串

    返回:
        str: 格式化后的金额字符串或提示信息
    """
    # 1. 删除所有空格和逗号
    amount_str = re.sub(r'[，,\s]', '', original_amount)
    amount_str = amount_str.replace('．', '.')  # 将全角点号转换为半角点号

    # 2. 定义正则表达式模式，优先级依次为“元”、“万”/“万元”、无单位
    patterns = [
        (r"(\d+\.?\d*)元", 1),         # 匹配“元”，乘以1
        (r"(\d+\.?\d*)万元?", 10000),  # 匹配“万”或“万元”，乘以10,000
        (r"(\d+\.?\d*)(?![万|元])", 1) # 匹配没有“万”或“元”的数值，默认乘以1
    ]

    # 3. 遍历模式并尝试匹配
    for pattern, multiplier in patterns:
        match = re.search(pattern, amount_str)
        if match:
            try:
                value = float(match.group(1))
                value *= multiplier
                # 格式化为整数，四舍五入
                formatted_amount = "{:.0f}".format(value)
                return formatted_amount
            except ValueError:
                continue  # 如果转换失败，尝试下一个模式

    # 4. 如果没有匹配到任何模式，返回默认提示信息
    return ""

if __name__ == "__main__":
# 测试用例

    input_tests = [
        "RMB100.01万元威威",
        "预算为200.6元",
        "总金额为3.5万元",
        "费用为1，000元",
        "预计支出为50,000元",
        "项目预算未确定",
        "金额为-1,500元",
        "总计为2万元和3,000元",
        "合计为5万人民币",
        "资金需求量为0.75万",
        "支出预计为100元和200元",
        "11000 万元",
        "预算为100万元",
        "费用为100元人民币",
        "金额：￥300.50元",
        "支出为30,000元及50万",
        "费用预计为",
        "成本为0元",
        "支出为1.5万",
        "总金额为100.5元",
        "RMB1,234.56万元项目",
        "项目费用为￥7,890元",
        "预计投资-2.5万元",
        "支出为万100元",  # 非标准格式，应返回默认提示
        "伍万元整（50,000.00 元）",
        "金额为人民币3万5千元",  # 包含中文数字组合
        "金额10,000 (壹万元）"
    ]

    for test in input_tests:
        formatted = format_amount(test)
        print(f"输入: '{test}' -> 输出: '{formatted}'")



