如何将bytes对象转换为python中的字符串?



我使用pythonnetdiscover工具获取哪些设备连接到我的本地网络,我想将它们的IP地址写入一个文本文件。为此,我想从以下列表中取出IP地址,该列表是netdiscover的乘积:

lst = [{'ip': b'192.168.1.1', 'mac': b'40:35:c1:8e:7e:78'},
{'ip': b'192.168.1.108', 'mac': b'44:a0:50:56:22:99'},
{'ip': b'192.168.1.101', 'mac': b'ff:5b:4b:46:70:67'},
{'ip': b'192.168.1.100', 'mac': b'6a:ef:3b:58:8f:f0'},
{'ip': b'192.168.1.102', 'mac': b'46:72:b0:ef:3c:a8'}, 
{'ip': b'192.168.1.104', 'mac': b'58:c2:f5:b1:65:42'}]

IP地址为bytes对象。为了将它们转换为字符串,以便将它们写入文件,我使用了以下代码:

for i in lst:
f=i.get("ip")
f1=str(f)
f2=f1.partition("b")
print(f2[2])

这段代码给了我我想要的,但对我来说似乎很荒谬。是否有更优雅的方式从列表中取出IP地址?

具有简单的列表推导和bytes.decode函数:

ips = [d['ip'].decode() for d in lst]
print(ips)

['192.168.1.1', '192.168.1.108', '192.168.1.101', '192.168.1.100', '192.168.1.102', '192.168.1.104']

最新更新