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

Python文本转嵌套列表:如何修正格式适配CUCM函数调用

问题:转换文本文件为符合要求的嵌套列表用于CUCM函数输入

问题背景

需将每行格式为"A.B.C.D","user","test123"的文本文件转换为嵌套列表,作为cucm函数的输入。现有代码将整行内容识别为单个带引号的元素,导致cucm函数执行失败。

现有代码

filepath = "<path>/connect.txt"

def func(x):
    try:                                                         
        return int(x)
    except ValueError:
        return x
with open(filepath) as f:
    table_data = [[ func(x) for x in line.split()] for line in f]
    
print (table_data)

当前输出

[['"A.B.C.D","user","test123"'], ['"W.X.Y.Z","user","test123"']]

预期输出

[["A.B.C.D","user","test123"], ["W.X.Y.Z","user","test123"]]

CUCM目标函数

def cucm(ip, username, password):
    sshsession = paramiko.SSHClient()
    sshsession.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    sshsession.connect(ip, username=username, password=password)
    # "display=True" is just to show you what script does in real time. While in production you can set it to False
    interact = SSHClientInteraction(sshsession, timeout=600, display=True)
    # program will wait till session is established and CUCM returns admin prompt
    interact.expect('admin:') 

解决方案

问题根源在于line.split()默认按空格分割,但目标文本行无空格,是带引号的逗号分隔格式。使用Python内置的csv模块可精准解析这类格式:

import csv

filepath = "<path>/connect.txt"

def func(x):
    try:                                                         
        return int(x)
    except ValueError:
        return x

with open(filepath, newline='') as f:
    reader = csv.reader(f, quotechar='"', delimiter=',')
    table_data = [[func(x) for x in row] for row in reader]
    
print(table_data)

关键说明

  • csv.reader会自动识别带引号的字段,去除引号并按逗号分割每行内容
  • quotechar='"'指定引号为字段包裹符,delimiter=','指定分隔符为逗号
  • 保留原func函数,用于按需将字段转换为数字类型

修改后的代码输出将完全匹配预期格式,生成的嵌套列表可直接传入cucm函数使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:36:27