【发布时间】:2017-05-03 10:04:45
【问题描述】:
需要建议如何从几个列表中制作第三个列表。 第一个是这样的(大约20000行): 清单 1。
field1 field2 field3 field4 field5 field6 field7
---------------------------------------------------------------------------
1167 28669 001f.ce5d.cb4d Gi0/0/1.10 1 Vi2.156 PTA
848 32350 c83a.350d.f368 Gi0/0/1.10 1 Vi2.601 PTA
1771 43465 c46e.1f7a.4763 Gi0/0/1.10 1 Vi2.959 PTA
1390 24116 dc9f.db01.c6e8 Gi0/0/1.10 1 Vi2.32 PTA
712 23579 d850.e6d5.cb1c Gi0/0/1.10 1 Vi2.436 PTA
1239 28354 2828.5dd4.bc65 Gi0/0/1.10 1 Vi2.78 PTA
204 27816 e03f.491d.9978 Gi0/0/1.10 1 Vi2.341 PTA
383 28368 60e3.278c.7199 Gi0/0/1.10 1 Vi2.114 PTA
671 54657 c46e.1f81.a3d3 Gi0/0/1.10 1 Vi2.224 PTA
第二个是这样的(大约20000行): 清单2
field1 field2 field3 field4 field5
---------------------------------------------------------------------
Vi2.1 0001799 PPPoE 00:00:08 10.100.146.30
Vi2.2 0010129 PPPoE 00:00:08 10.100.148.108
Vi2.4 0010173 PPPoE 00:00:08 10.100.150.56
Vi2.5 0011093 PPPoE 00:00:08 10.100.146.143
Vi2.6 0003301 PPPoE 00:43:48 10.100.150.107
Vi2.7 0010101 PPPoE 00:00:08 10.100.147.133
Vi2.8 0001859 PPPoE 00:00:08 10.100.145.223
Vi2.9 0010049 PPPoE 06:45:08 10.100.147.138
Vi2.10 0003515 PPPoE 00:00:28 10.100.146.173
Vi2.11 0001747 PPPoE 00:00:18 10.100.146.37
Vi2.12 0011060 PPPoE 04:40:28 10.100.149.165
Vi2.13 0001335 PPPoE 00:00:08 10.239.152.165
Vi2.14 0010154 PPPoE 00:00:08 10.100.148.68
我需要创建第三个列表,顺序是这样的:
field6(list1) Field2(list1) field3(list1) field2(list2) field5(list2)
顺便说一句。列表 1 中的字段 6 与列表 2 中的字段 1 相同。 我明白,我需要从 list1 中取出每一行,使其成为字段列表,然后取出字段 6 并转到 list2 并在 list2 中搜索该值。 然后将所有需要的字段收集到一个新行中。任何人,我对解析非常非常陌生,请举几个例子来处理这个(我认为是典型的)任务!
澄清。 我通过 python 3 telnetlib 接收这些行,如下所示:
import telnetlib
HOST = '2.22.22.22'
password = "user"
user = "user"
tn = telnetlib.Telnet(HOST)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"term len 0 \n")
tn.write(b"show pppoe session | exclude 7878.7878.7878 \n")
tn.write(b"\n exit\n")
mystring = tn.read_all().decode('ascii').replace('\r\n', '\n')
print(mystring)
temp_list = mystring.splitlines()
print(temp_list)
mylist = ["\n".join(s for s in temp_list if 'PTA' in s and 'Vi2' in s)]
【问题讨论】:
-
但这不是python列表-))
-
我从 Cisco 设备的 telnetlib 接收到该信息。
-
表格数据的格式是什么?
-
这是一个字符串列表,每一行都是字符串。
-
我的意思是它是文本、csv 还是其他?
标签: list python-3.x