gpt4 book ai didi

python - 将具有可变数量参数的数据帧拆分为元组

转载 作者:行者123 更新时间:2023-11-28 18:14:49 25 4
gpt4 key购买 nike

我有一个运行命令的 ansible 剧本

#show int status

在网络设备上。我正在尝试计算可供使用的空闲端口数。它返回这个输出

[u'Et2        description1       notconnect   in Po23       full    10G Not Present ']
[u'Et3 description2 notconnect 1152 full 10G Not Present ']
[u'Et4 other desc notconnect 1 full 10G Not Present ']
[u'Et5 notconnect 1 full 10G Not Present ']

我只对前 3 列感兴趣。网络设备不支持json格式所以无法运行

#show int status | json

我想要 3 个列表,然后我可以将它们压缩并使用,就像我已经为其他支持 json 的网络设备所做的那样;列表看起来像

list1 = ['Et2', 'Et3', 'Et4', 'Et5']
list2 = ['description1', 'description2', '', '']
list3 = ['notconnect','notconnect', 'notconnect', 'notconnect']

但由于描述字段有时为空,我无法计算出一个好的 .split() 来准确地将列表返回为 .split[1]如果我按间距拆分,有时会有描述,有时会“不连接”。有什么好的方法吗?

最佳答案

正则表达式可能是最好的解决方案,但无论如何,如果您不想使用它,我看到了 2 个解决方案。

首先:使用行与行之间的格式看起来非常一致的事实,并且每个新项目都从行中的同一点开始。

a = 'Et3        description2       notconnect   1152          full    10G Not Present '
b = 'Et4 notconnect 1 full 10G Not Present '
L = [a, b]

list1, list2, list3 = [], [], []

for elt in L:
list1.append(elt[0:11].strip(" "))
list2.append(elt[11:30].strip(" "))
list3.append(elt[30:43].strip(" "))


# Output:
list1
Out[8]: ['Et3', 'Et4']

list2
Out[9]: ['description2', '']

list3
Out[10]: ['notconnect', 'notconnect']

其次,使用 if/elif "string"in elt: 语句和内置规则来解析您的数据。

用 rstrip() 编辑:

a = 'Et3        description2       notconnect   1152          full    10G Not Present '
b = 'Et4 other desc notconnect 1 full 10G Not Present '
L = [a, b]

list1, list2, list3 = [], [], []

for elt in L:
list1.append(elt[0:11].rstrip(" "))
list2.append(elt[11:30].rstrip(" "))
list3.append(elt[30:43].rstrip(" "))

# Output
list1
Out[2]: ['Et3', 'Et4']

list2
Out[3]: ['description2', 'other desc']

list3
Out[4]: ['notconnect', 'notconnect']

关于python - 将具有可变数量参数的数据帧拆分为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com