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

Excel单元格写代码导入Python后如何执行实现动态字符串拼接?

解决方案

方法1:占位符模板方案(推荐,无安全风险)

如果可以调整Excel单元格内的内容,优先用占位符替代直接写代码表达式,完全规避代码执行风险,灵活性也足够。

  1. 把Excel里的句子改为带列名占位符的格式,例如原来的'random words' + df['adjective'] + 'problem'改成random words {adjective} problem
  2. 合并后直接用format_map渲染即可:
import pandas as pd

# 模拟原始数据
df1 = pd.DataFrame({'adjective': ['small','Big'], 'key': [1,2]})
# 模拟导入的带模板的DataFrame
imported_df = pd.DataFrame({
    'key':[1,2], 
    'sentence': [
        'random words {adjective} problem', 
        'other random string {adjective} random words'
    ]
})
# 合并
df2 = df1.merge(imported_df, on='key')
# 渲染模板得到最终文本
df2['final_sentence'] = df2.apply(lambda x: x['sentence'].format_map(x.to_dict()), axis=1)

输出的final_sentence列就是你需要的动态拼接结果。


方法2:eval执行表达式(仅可信场景使用)

如果不能修改Excel里已有的代码表达式,可以用eval执行字符串内的代码,注意仅在你完全确认Excel内容无恶意代码的场景下使用:

import pandas as pd

df1 = pd.DataFrame({'adjective': ['small','Big'], 'key': [1,2]})
# 模拟导入的带代码表达式的DataFrame,sentence是从Excel读取的字符串
imported_df = pd.DataFrame({
    'key':[1,2], 
    'sentence': [
        "'random words ' + df['adjective'] + ' problem'", 
        "'other random string ' + df['adjective'] + ' random words'"
    ]
})
df2 = df1.merge(imported_df, on='key')

def run_expr(row):
    # 把表达式里的df引用替换为当前行引用
    expr = row['sentence'].replace("df['", "row['").replace('df["', 'row["')
    return eval(expr, {"row": row})

df2['final_sentence'] = df2.apply(run_expr, axis=1)

注意事项

  • eval存在代码注入风险,不可用于内容来源不可控的场景
  • 如果需要用到更多列、自定义函数,只需把对应的变量/函数传入eval的第二个参数(全局命名空间字典)即可扩展

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:57:04