只需去掉点,把字符串分成3位数的块,然后用点重新连接。
>>> from operator import itemgetter
>>> f = itemgetter(slice(0,3), slice(3,6), slice(6,9), slice(9,12))
>>> s = "0100.8900.0033"
>>> '.'.join(f(s.replace('.','')))
'010.089.000.033'
如果前导零真的是个问题,我不确定是否有有效的方法去除它们。我会和
>>> '.'.join(['0' if octet == '000' else octet.lstrip("0") for octet in f(s.replace('.', ''))])
'10.89.0.33'
或者,将每个字符串作为
int
. (我不确定哪一个更节省时间或空间;使用字符串或往返于
str
到
内景
回到
str公司
):
>>> '{}.{}.{}.{}'.format(*map(int, f(s.replace('.', ''))))
'10.89.0.33'