首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:字符串中的字符串检查失败

Python:字符串中的字符串检查失败
EN

Stack Overflow用户
提问于 2016-07-26 02:45:48
回答 1查看 258关注 0票数 0

我已经花了好几个小时的时间来研究和重构这个问题,但我无法让它开始工作。

代码语言:javascript
复制
import paramiko
import sys
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
    paramiko.AutoAddPolicy())
ssh.connect(switch, username='user', 
    password='pass')
stdin,stdout,stderr = ssh.exec_command("show interfaces descriptions")
line = stdout.readline()
while line != "":
    if ("UNIT " + unit) in line:
        switchPort = line [:9]
        switchPort.strip()
    line = stdout.readline()
print (switchPort)
command = "show vlans"
stdin,stdout,stderr = ssh.exec_command(command)
line = stdout.readline()
while line != "":       
    if acronym + "-s" in line or acronym + "-r" in line or ("subscribed" in line and "un" not in line and "pvlan" not in line):
        line.strip(' ')
        subscribedVlan = ''.join([i for i in line if i.isdigit()])
        line=stdout.readline()
        if switchPort in line:
            portVlan = "Subscribed"

    elif "un" in line and "pvlan" not in line:
        unsubscribedVlan = ''.join([i for i in line if i.isdigit()])
        if switchPort in line:
            portVlan = "Unsubscribed"
        else:
            line=stdout.readline()
            print ("SwitchPort: " + switchPort)
            print ("line: " + line)
            if switchPort in line:
                portVlan = "Unsubscribed"
                print ("In Unsubscribed")
            else:
                print("Check Failed")

产出:

SwitchPort: ge-0/0/3

行: ge-0/0/3.0*,ge-0/0/47.0,ge-0/1/3.0*

检查失败

我对失败有异议的主要部分是elif部分。除了其他实例之外,我让它在语法和逻辑上与if匹配,几乎完全正确。让我做循环的是,switchPort打印的代码与一行字符串中的一段相匹配。有人知道是什么让这件事被绊倒了吗?

在检查之前,我尝试将两个变量转换为字符串,但这不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-26 02:56:57

有时,在控制台中很难看到字符串之间的细微差别。试试这个:

代码语言:javascript
复制
print('SwitchPort: {!r}'.format(switchPort))
print('line: {!r}'.format(line))

这可能会使区别更容易发现。

根据上面的讨论,这里的实际问题是一个落后的空间。解决办法是改变:

代码语言:javascript
复制
switchPort.strip()

代码语言:javascript
复制
switchPort = switchPort.strip()

(str.strip不修改任何内容;它返回一个新的、已剥离的字符串。)

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

https://stackoverflow.com/questions/38580272

复制
相关文章

相似问题

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