Python - 从 IP 地址中删除前导零
Python - remove leading zeros from IP addresses
我正在尝试从 IP 地址中删除前导零,但它不起作用
import re
def remove_zeros_from_ip(ip_add):
string = re.sub('(?!(\.0\.))(\.[0]{1,2})', '.', ip_add)
return string
ip = '10.0.01.10'
print(remove_zeros_from_ip(ip))
ip1 = '10.00.002.20'
print(remove_zeros_from_ip(ip1))
但是得到这个-
10.0.1.10
10..2.20
如何获得?-
10.0.1.10
10.0.2.20
您可以拆分IP八位字节,然后将string中的Octets转换为int,然后再返回str。
>>> ip='10.00.01.10'
>>> '.'.join([str(int(x)) for x in ip.split('.')])
'10.0.1.10'
您可以删除以 .
或 ^
(行首)开头且后跟除 .
之外的任何零以及前面的内容(.
或行首):
import re
def remove_zeros_from_ip(ip_adr):
return re.sub('(^|\.)0+(?=[^.])', r'', ip_adr)
测试:
print(remove_zeros_from_ip('10.0.01.10'))
print(remove_zeros_from_ip('10.00.002.20'))
print(remove_zeros_from_ip('0010.00.02.0020'))
输出:
10.0.1.10
10.0.2.20
10.0.2.20
非正则表达式的解决方案是用 .
拆分字符串并使用 str.rstrip
删除前导零,然后使用 str.join
重建字符串:
def remove_zeros_from_ip(ip_adr):
return '.'.join(p.lstrip('0') or '0' for p in ip_adr.split('.'))
如果唯一的数据是一个 ip,您可以使用字边界 \b
,匹配 1+ 个零并使用捕获组来匹配 1+ 个数字并在替换中使用该组。
\b0+(\d+)
替换为
r''
例如
import re
def remove_zeros_from_ip(ip_add):
string = re.sub(r'\b0+(\d+)', r'', ip_add)
return string
ip = '10.0.01.10'
print(remove_zeros_from_ip(ip))
ip1 = '10.00.002.20'
print(remove_zeros_from_ip(ip1))
输出
10.0.1.10
10.0.2.20
您可以使用:
0*(\d+)
英语:贪婪地寻找零,直到我们遇到任何其他数字序列。将数字序列存储在
中
我正在尝试从 IP 地址中删除前导零,但它不起作用
import re
def remove_zeros_from_ip(ip_add):
string = re.sub('(?!(\.0\.))(\.[0]{1,2})', '.', ip_add)
return string
ip = '10.0.01.10'
print(remove_zeros_from_ip(ip))
ip1 = '10.00.002.20'
print(remove_zeros_from_ip(ip1))
但是得到这个-
10.0.1.10
10..2.20
如何获得?-
10.0.1.10
10.0.2.20
您可以拆分IP八位字节,然后将string中的Octets转换为int,然后再返回str。
>>> ip='10.00.01.10'
>>> '.'.join([str(int(x)) for x in ip.split('.')])
'10.0.1.10'
您可以删除以 .
或 ^
(行首)开头且后跟除 .
之外的任何零以及前面的内容(.
或行首):
import re
def remove_zeros_from_ip(ip_adr):
return re.sub('(^|\.)0+(?=[^.])', r'', ip_adr)
测试:
print(remove_zeros_from_ip('10.0.01.10'))
print(remove_zeros_from_ip('10.00.002.20'))
print(remove_zeros_from_ip('0010.00.02.0020'))
输出:
10.0.1.10
10.0.2.20
10.0.2.20
非正则表达式的解决方案是用 .
拆分字符串并使用 str.rstrip
删除前导零,然后使用 str.join
重建字符串:
def remove_zeros_from_ip(ip_adr):
return '.'.join(p.lstrip('0') or '0' for p in ip_adr.split('.'))
如果唯一的数据是一个 ip,您可以使用字边界 \b
,匹配 1+ 个零并使用捕获组来匹配 1+ 个数字并在替换中使用该组。
\b0+(\d+)
替换为
r''
例如
import re
def remove_zeros_from_ip(ip_add):
string = re.sub(r'\b0+(\d+)', r'', ip_add)
return string
ip = '10.0.01.10'
print(remove_zeros_from_ip(ip))
ip1 = '10.00.002.20'
print(remove_zeros_from_ip(ip1))
输出
10.0.1.10
10.0.2.20
您可以使用:
0*(\d+)
英语:贪婪地寻找零,直到我们遇到任何其他数字序列。将数字序列存储在