的Python 3.6.0分裂()上的一个字符或另一
我有解析来自Cisco交换机和路由器输出的程序。
我得到的程序中,我从'sh ip int brief' 命令返回输出的一个点。
我把它放在一个列表中,所以我可以拆分'>'字符并提取主机名。
它完美的作品。相关的代码片断:
ssh_channel.send("show ip int brief | exc down" + "\n")
# ssh_channel.send("show ip int brief" + "\n")
time.sleep(0.6)
outp = ssh_channel.recv(5000)
mystring = outp.decode("utf-8")
ipbrieflist = mystring.splitlines()
hostnamelist = ipbrieflist[1].split('>')
hostname = hostnamelist[0]
如果路由器是“启用”模式的命令提示具有主机名之后的“#”字符。
如果我改变我的程序分裂的“#”字符:
hostnamelist = ipbrieflist[1].split('#')
它仍然完美。
我需要程序处理输出是否具有'>'字符或'ipbrieflist'中的'#'字符。
我发现了几个有效的参考文献来说明如何处理这个问题。例如:
import re
text = 'The quick brown\nfox jumps*over the lazy dog.'
print(re.split('; |, |\*|\n',text))
上面的代码完美地工作。
然而,当我修改我的代码如下:
hostnamelist = ipbrieflist[1].split('> |#')
它不工作。由'不行'我的意思是它不分裂任何一个字符。根本没有分裂。
以下调试是从PyCharm:
ipbrieflist = mystring.splitlines()ipbrieflist = {}列表:[ '末端长度为0',“RTR-1841>显示IP INT简要|删除','接口'] IP地址好吗?方法状态协议','FastEthernet0/1 192.168.1.204是NVRAM up up','Loopback0 172.17.0.1 YES NVRAM up up','','rtr-1841>'] hostnamelist = ipbrieflist [1] .split(' > |#')hostnamelist = {list}:['rtr-1841> show ip int brief | exc down'] hostname = {str}'rtr-1841> show ip int brief |删除'
正如你所看到的,hostname变量仍然包含'show ip int brief |删除“附加到它。
如果主机名后跟'#'字符,我会得到相同的确切行为。
我在做什么错?
谢谢。
呃,'re.split' ='str.split'。 –