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

Python动态调用数据清洗函数报错问题求助

解决字符串不可调用的函数调用问题

你报错的核心原因是:拼接出来的fn_call是字符串,不是真正的函数对象,自然没法像函数一样调用。下面给两种靠谱的实现方式:

推荐方案:用字典映射函数(安全易维护)

把所有清洗函数和对应的字段名做一个映射字典,遍历的时候直接通过字段名找到对应函数,逻辑清晰还不容易出错:

# 定义你的清洗函数
def clean_field_1(field_value):
    # 这里写实际清洗逻辑,比如处理空值、格式化内容
    return field_value.strip() if isinstance(field_value, str) else field_value

def clean_field_2(field_value):
    # 示例:把字段转为浮点型,失败返回默认值0.0
    try:
        return float(field_value)
    except (ValueError, TypeError):
        return 0.0

# 建立字段名到清洗函数的映射
clean_mapping = {
    "field_1": clean_field_1,
    "field_2": clean_field_2
}

# 遍历字典处理字段
for field_name, field_value in dict_object.items():
    # 检查当前字段是否有对应的清洗函数
    if field_name in clean_mapping:
        cleaned_val = clean_mapping[field_name](field_value)
        # 把清洗后的值更新回原字典(或者存入新字典)
        dict_object[field_name] = cleaned_val

备选方案:通过全局命名空间获取函数(不推荐)

如果不想维护映射字典,可以通过globals()获取全局范围内的函数对象,但这种方式风险较高——如果有同名变量会被误认成函数,而且代码可读性差:

for field_name, field_value in dict_object.items():
    func_name = f"clean_{field_name}"
    # 检查函数是否存在于全局命名空间
    if func_name in globals():
        clean_func = globals()[func_name]
        cleaned_val = clean_func(field_value)
        dict_object[field_name] = cleaned_val

优先用第一种方案,后续新增字段或修改清洗逻辑时,只需要更新映射字典和对应函数就行,代码维护起来更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:52:08