- python - 字符串转换为干净的int列表

我想把这个100020630变成[100,020,630]但是,到目前为止我只能把这个"100.020.630"变成["100","020","630"]


def fulltotriple(x):


 X=x.split(".")


 return X



print(fulltotriple("192.123.010"))



时间:


def fulltotriple(data):


 result = []


 for i in range(0, len(data), 3):


 result.append(int(data[i:i + 3]))


 return (result)



print(fulltotriple("192123010"))



输出:

 
[192, 123, 10]



 

你可以使用内置的wrap函数:


In [3]: s = "100020630" 


In [4]: import textwrap 


In [6]: textwrap.wrap(s, 3) 


Out[6]: ['100', '020', '630']



在文本(字符串)中包装单个段落,因此每行的长度最长为长字符,返回输出行的列表,不带最终换行符。

如果你想处理IP地址,你是完全错误的。

IP地址是一个24-binary数字数字,不是9-decimal数字,它被分割为4个子块,例如: 192.168.0.1,但是,在十进制视图中,它们都可以是3-digit,或者是2-digit或其他任何组合,我建议你使用ipaddress标准模块:


import ipaddress



a = '192.168.0.1'



ip = ipaddress.ip_address(a)


ip.packed



将返回打包的二进制格式:

b'xc0xa8x00x01'

如果要将IPv4转换为二进制格式,可以使用以下命令:

''.join(bin(i)[2:] for i in ip.packed)

它将返回此字符串:

'110000001010100001'

下面是使用列表理解的一种方法:


s = '100020630'


[s[i:i + 3] for i in range(0, len(s), 3)]


# ['100', '020', '630']



使用正规表达式查找三元组d{3}的所有匹配


import re



str = "100020630"



def fulltotriple(x):


 pattern = re.compile(r"d{3}")


 return pattern.findall(x)



print(fulltotriple(str))



输出:


['100', '020', '630']



你可以使用wrap,它是内置函数,


from textwrap import wrap



def fulltotriple(x):


 x = wrap(x, 3)


 return x



print(fulltotriple("100020630"))



输出:


['100', '020', '630']



你可以使用python内置函数:


text = '100020630'



# using wrap



from textwrap import wrap


wrap(text, 3)


>>> ['100', '020', '630']



# using map/zip



map(''.join, zip(*[iter(text)]*3))


>>> ['100', '020', '630']



...