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

导入CSV文件到Python时如何替换指定格式字符串生成合规Cisco ASR配置

实现方案

最简单的实现方式是在读取CSV字段后、传入Jinja模板渲染前,直接预处理oline_BD_assignment字段即可,无需修改模板代码,以下是具体修改内容:

核心处理逻辑

原格式4323:63210:BD的结构固定为[前缀]:[数值]:BD,直接按冒号拆分取前两段拼接下划线即可,无需复杂正则匹配,代码更易维护。

修改后的完整Python脚本

import os
import jinja2
import csv

# 提前读取模板,避免每次循环重复读文件提升效率
template_file = 'asr_generate_config.j2'
with open(template_file) as f:
    list_template = f.read()
template = jinja2.Template(list_template)

csv_file = "BFL1_AR1.csv"
with open(csv_file) as f:
    read_csv = csv.DictReader(f)
    for list_elements in read_csv:
        generated_list = list_elements['TEST']
        generated_list = generated_list.split()
        list_elements['TEST'] = generated_list
        
        # 新增:处理BD字段格式
        bd_raw = list_elements['oline_BD_assignment']
        bd_parts = bd_raw.split(':')
        list_elements['oline_BD_assignment'] = f"{bd_parts[0]}_{bd_parts[1]}"

        print()
        print('-' * 80)
        print(template.render(list_elements))
        print('-' * 80)
        print()

可选正则实现方式

如果你更习惯用正则处理,也可以用替换逻辑替代拆分逻辑,效果完全一致:

import re
# 替换上面的拆分逻辑为以下代码
bd_raw = list_elements['oline_BD_assignment']
list_elements['oline_BD_assignment'] = re.sub(r'(\d+):(\d+):BD', r'\1_\2', bd_raw)

效果验证

修改后生成的配置会自动将所有4323:63210:BD格式的内容替换为4323_63210,完全符合ASR设备的配置语法要求,可直接复制粘贴使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:36:08