所以这是我的代码:
class telnet(object):
"""conexiune"""
def __init__(self):
HOST = "route-views.routeviews.org"
user = "rviews"
password = ""
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ", 5)
tn.write(user + "\r\n")
tn.read_until("Password: ", 5)
tn.write(password + "\r\n")
print tn.read_until(">", 10)
tn.write("show ip route 192.0.2.1"+"\r\n")
self.y = tn.read_until("free", 10)
print self.y
tn.write("exit"+ "\r\n")
tn.close()
def re(self):
self.m = re.search(r' Known via "bgp \d{0,5}"', self.y)
if self.m:
print self.m.group(0)
else:
print False
我需要做的是返回self.m而不是打印它。如果我写'返回"这个答案是:" + self.m',我收到此错误:
返回"答案是:" + self.m.group(0) TypeError:无法连接' str'和' _sre.SRE_Match'对象
如果我使用打印它打印它,但我不知道如何使用return语句。
这是它必须返回的内容:
已知" bgp 6447"
从这个telnet输出: 路线的视图> show ip route 192.0.2.1
192.0.2.1/32的路由条目
已知通过" bgp 6447",距离20,公制0
标记19214,输入外部
最后更新自208.74.64.40 4w1d前
路由描述符块:
208.74.64.40,来自208.74.64.40,4w1d前
路由度量为0,流量共享计数为1
AS Hops 1
路线标记19214
MPLS标签:无
路线的视图>
我知道返回用于功能 - 这就是我添加' +'的原因。顺便说一下,我是Python的初学者。任何帮助将不胜感激。
答案 0 :(得分:2)
我认为在你的回归'声明你错过了' .group(0)'。
尝试:
if self.m:
return self.m.group(0)
答案 1 :(得分:1)
来自文档
>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
>>> m.group(0) # The entire match
'Isaac Newton'
>>> m.group(1) # The first parenthesized subgroup.
'Isaac'
>>> m.group(2) # The second parenthesized subgroup.
'Newton'
>>> m.group(1, 2) # Multiple arguments give us a tuple.
('Isaac', 'Newton')
所以,试试这个
>>> import re
>>> y = ' Known via "bgp 54574"'
>>> m = re.search(r' Known via "bgp (\d{0,5})"', y)
>>> print m.group(1) if m else False
54574
>>> y = ' Known via "bg p 54574"'
>>> m = re.search(r' Known via "bgp (\d{0,5})"', y)
>>> print m.group(1) if m else False
False
>>>