我正在尝试通过读取/proc/net/if_inet6
来获取本地IPV6地址。但是那里的地址没有冒号,例如:000000000000000000000abc00070def
。
所以我要在多个地方添加冒号(:),
str6 = "000000000000000000000abc00070def"
i = 4
addr = str6[:i]
while i < len(str6):
addr += ":" + str6[i:i+4]
i += 4
print addr # output: 0000:0000:0000:0000:0000:0abc:0007:0def
对于普通的字符串,它工作正常。
但是由于字符串是IPV6地址,所以想知道是否有更好的方法吗? (尝试使用ipaddress模块,但我认为没有冒号就不支持。)
答案 0 :(得分:2)
ipaddress.IPv6Address
也可以根据“ valid” 整数构造IPv6地址:
import ipaddress
ipv6_addr = ipaddress.ip_address(int('000000000000000000000abc00070def', 16))
print(ipv6_addr)
打印:
::abc:7:def
地址表示形式的长形式(爆炸):
print(ipv6_addr.exploded)
打印:
0000:0000:0000:0000:0000:0abc:0007:0def