理想情况下,我希望将此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地址作为第一步=)
编辑:我没有找到任何方法来获取列表,而堆栈溢出列表中没有“”
答案 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]