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

如何用Python匹配两个文件的值并生成替换后的SQL插入语句文件

实现方案

核心思路

  • 首先将values_list.txt中的键值对解析为Python字典,方便后续占位符查找替换
  • 对字典的key按长度倒序排序,避免短key(如val1)先匹配长key(如val111)前缀导致替换错误
  • 逐行处理SQL语句,替换所有对应占位符
  • 将替换后的内容写入最终的输出SQL文件

完整实现代码

# 读取键值对文件并生成映射字典
valsfile = open('values_list.txt')
valscontents = valsfile.read()
valsline = valscontents.splitlines()
valsfile.close()

val_map = {}
for line in valsline:
    # 按第一个逗号分割,避免值内包含逗号导致解析错误
    key_part, value_part = line.split(',', 1)
    val_map[key_part.strip()] = value_part.strip()

# 读取SQL模板文件
sqlfile = open('insert_values.sql')
sqlcontents = sqlfile.read()
sqlline = sqlcontents.splitlines()
sqlfile.close()

# 逐行替换占位符
output_sql = []
# 对key按长度倒序排序,长key优先替换,避免前缀匹配错误
sorted_keys = sorted(val_map.keys(), key=lambda x: len(x), reverse=True)
for sql_line in sqlline:
    processed_line = sql_line
    for key in sorted_keys:
        processed_line = processed_line.replace(key, val_map[key])
    output_sql.append(processed_line)

# 写入最终结果文件
with open('final_insert.sql', 'w', encoding='utf-8') as out_file:
    out_file.write('\n'.join(output_sql))

优化建议

你也可以将文件读取逻辑改为with上下文管理器写法,无需手动关闭文件,更安全可靠:

# 示例:用with读取键值对文件
with open('values_list.txt', 'r', encoding='utf-8') as f:
    valsline = f.read().splitlines()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:02