You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理货币相关文本转换时lakhs单位转换结果异常问题

逆文本归一化lakhs货币单位转换逻辑修复

问题描述

开发逆文本归一化功能时,需要处理lakhs类货币文本,完成单位到数值的换算同时保留其余关联文本。
使用现有代码运行测试用例string_value = "25 lakhs only",预期输出为['2500000', 'only'],实际输出为['25', '2500000', 'only'],原始数值位未被移除,结果不符合要求。

原有问题代码

def money_con(string_value):
    str_list = string_value.split(" ")
    new_list = []
    for index,char in enumerate(str_list):
        if char == "lakhs":
            res = int(str_list[index-1]) * 100000
            new_list.append(str(res))
        else:
            new_list.append(str_list[index])
    return new_list


string_value = "25 lakhs only"
res = money_con(string_value)
print(res)

根因分析

逐词遍历拼接结果时,没有对lakhs的前置数值做特殊处理:遍历到前置数值(比如用例里的25)时,因为当前词不是lakhs,会被直接加入结果列表;等遍历到lakhs时,又会计算换算后的数值追加到列表,最终导致原始数值残留。

修复方式

遍历过程中不需要依赖索引取前一位元素:当匹配到lakhs时,直接把结果列表最后一个元素(也就是刚加进去的前置数值)弹出,替换为换算完成的数值即可,其余非单位词正常追加。

修复后可运行代码

def money_con(string_value):
    str_list = string_value.split(" ")
    new_list = []
    for char in str_list:
        if char == "lakhs":
            # 移除前一位原始数值,替换为单位换算后的值
            pre_val = new_list.pop()
            converted = int(pre_val) * 100000
            new_list.append(str(converted))
        else:
            new_list.append(char)
    return new_list


# 测试验证
string_value = "25 lakhs only"
res = money_con(string_value)
print(res)
# 输出结果:['2500000', 'only'],完全符合预期

拓展提示:如果后续需要兼容小数数值、多印度货币单位(比如crore、lakh变体拼写)混合的场景,可以在当前逻辑基础上补充数值格式校验、多单位换算映射表即可。

内容的提问来源于stack exchange,提问作者chalns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:45:38