首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在列表中分隔逗号分隔的值,使其成为列表的单个值

如何在列表中分隔逗号分隔的值,使其成为列表的单个值
EN

Stack Overflow用户
提问于 2019-07-16 06:36:13
回答 3查看 1.6K关注 0票数 1

我在python中获取列表中的一些开关命令输出,我可以在list中得到结果,但是这个列表包含两个元素,甚至那些元素都是逗号分隔的,我希望将这些逗号分隔的值作为list的单个元素。

我使用netmiko模块,在这里我使用python在list中取出一些命令输出。

代码语言:javascript
复制
                for k in range(len(cli_commands)):
                    net_connect.send_command(cli_commands[k])
                    vall=net_connect.send_command(cli_commands[k])
                    myList1.append(vall)
              ```print(myList)

Actual result is:

['Cisco IOS Software, C2960S Software (C2960S-UNIVERSALK9-M), Version 15.0(2)SE11, RELEASE SOFTWARE (fc3)', 'NAME: "1", DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  , VID: V02  , SN: FOC1452X5C5\n\n']


Expectation:

['Cisco IOS Software', 'C2960S Software (C2960S-UNIVERSALK9-M)', 'Version 15.0(2)SE11', 'RELEASE SOFTWARE (fc3)', 'NAME: "1"', 'DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L'  ,' VID: V02'  , 'SN: FOC1452X5C5\n\n']

or
['Cisco IOS Software','C2960S Software (C2960S-UNIVERSALK9-M)',Version 15.0(2)SE11','DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L','SN: FOC1452X5C5\n\n']
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-16 06:44:13

您必须对每个字符串进行.split(','),以获得嵌套列表,然后使其变得简单明了。.split()的使用会在每个sub_string的开头和结尾删除额外的空格。

代码语言:javascript
复制
the_list = ['Cisco IOS Software, C2960S Software (C2960S-UNIVERSALK9-M), Version 15.0(2)SE11, RELEASE SOFTWARE (fc3)', 'NAME: "1", DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  , VID: V02  , SN: FOC1452X5C5\n\n']

the_list = [map(lambda x: x.strip(), item.split(',')) for item in the_list]
new_list = [item for sub_list in the_list for item in sub_list]

第一行将the_list中的每个字符串转换为映射生成器,在被','字符除以后将.strip() (修整空格)应用于每个子字符串。第二个就是让列表变得简单,这就是[[1, 2], [3, 4]]将变成[1, 2, 3, 4]。它相当于:

代码语言:javascript
复制
the_list = ['Cisco IOS Software, C2960S Software (C2960S-UNIVERSALK9-M), Version 15.0(2)SE11, RELEASE SOFTWARE (fc3)', 'NAME: "1", DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  , VID: V02  , SN: FOC1452X5C5\n\n']

new_list = []
for string in the_list:
    for item in string.split(','):
        new_list.append(item.strip())
票数 1
EN

Stack Overflow用户

发布于 2019-07-16 06:41:15

看起来你需要str.splitlist.extend

Ex:

代码语言:javascript
复制
myList1 = []        
for k in range(len(cli_commands)):
    net_connect.send_command(cli_commands[k])
    vall=net_connect.send_command(cli_commands[k])
    myList1.extend(vall.strip().split(","))
print(myList1)
票数 1
EN

Stack Overflow用户

发布于 2019-07-16 06:45:14

绝对崩溃的答案是正确的,但你必须这样使用它

代码语言:javascript
复制
myList = ['Cisco IOS Software, C2960S Software (C2960S-UNIVERSALK9-M), Version 15.0(2)SE11, RELEASE SOFTWARE (fc3)', 'NAME: "1", DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  , VID: V02  , SN: FOC1452X5C5\n\n']

cs_mylist = []
for y in [x.split(',') for x in myList]:
    for z in y:
        cs_mylist.append(z)

print(cs_mylist)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57051330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档