Python 预计正则表达式匹配包含在 b' '

Python pexpect regex match is encased in b' '

我是 Python 的新手,可以期待,但不是 TCL 的期待。我有一个超级简单的脚本,它通过 SSH 连接到 Cisco 路由器并查询 arp table 以获得 mac 地址。我想检索相应的IP地址。以下是感兴趣的行:

branchConnection.sendline('sh ip arp | i 00c0.b7')
time.sleep(1)
branchConnection.expect('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
print(str(branchConnection.match.group(0)))

它打印 b'10.198.7.10'

当我查看 pexpect.pty_spawn.spawn 对象时,它显示:

buffer (last 100 chars): b'             2   00c0.b790.b8c6  ARPA   GigabitEthernet0/0.100\r\nRTR-01#'
before (last 100 chars): b'sh ip arp | i 00c0.b7\r\nInternet  '
after: b'10.198.7.10'

所有内容都包含在 b' '

我假设这是正常的?有人可以解释这是怎么回事吗?我找不到任何可以解释这意味着什么的东西。我怎样才能预期 return 没有 b'' 的 IP 地址?

b表示字节。如果你需要一个字符串,你可以使用 decode。你需要知道它使用的是什么编码,但如果你不知道,你可以尝试 utf-8 这是很常见的

print(branchConnection.match.group(0).decode("utf-8"))


>>> b'10.198.7.10'.decode("utf-8")
'10.198.7.10'