字符串转换为int的Clean列表

时间:2019-05-07 14:33:38

标签: python

理想情况下,我希望将此100020630转换为[100,020,630] 但到目前为止,我只能将此"100.020.630"转换为["100","020","630"]

def fulltotriple(x):
    X=x.split(".")
    return X

print(fulltotriple("192.123.010"))

对于某些附加信息,我的目标是不将ip地址转换为bin地址作为第一步=)

编辑:我没有找到任何方法来获取列表,而堆栈溢出列表中没有“”

7 个答案:

答案 0 :(得分:4)

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

In [3]: s = "100020630"                                                                                                                                                                                          
In [4]: import textwrap                                                                                                                                                                                                                                                                                                                                                                                
In [6]: textwrap.wrap(s, 3)                                                                                                                                                                                       
Out[6]: ['100', '020', '630']
  

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

如果您想要int的列表:

[int(num) for num in textwrap.wrap(s, 3)]

输出:

[100, 020, 630]

答案 1 :(得分:4)

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

IP address是24位二进制数字,而不是9位十进制数字。它分为4个子块,例如:192.168.0.1。但。在十进制视图中,它们都可以是3位或2位或任何其他组合。我建议您使用ipaddress标准模块:

import ipaddress

a = '192.168.0.1'

ip = ipaddress.ip_address(a)
ip.packed

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

b'\xc0\xa8\x00\x01'

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

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

它将返回此字符串:

'110000001010100001'

答案 2 :(得分:3)

这是使用list comprehension的一种方法:

s = '100020630'
[s[i:i + 3] for i in range(0, len(s), 3)]
# ['100', '020', '630']

答案 3 :(得分:3)

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

import re

str = "100020630"

def fulltotriple(x):
    pattern = re.compile(r"\d{3}")
    return [int(found_match) for found_match in pattern.findall(x)]


print(fulltotriple(str))

输出:

[100, 20, 630]

答案 4 :(得分:3)

您可以使用wrap,它是python中的内置函数

from textwrap import wrap

def fulltotriple(x):
    x = wrap(x, 3)
    return x

print(fulltotriple("100020630"))

输出:

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

答案 5 :(得分:2)

您可以为此使用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']

答案 6 :(得分:1)

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]