如何将以逗号分隔的单个 BYTE 元素转换为列表的更多元素
How to convert a single BYTE element separated by commas to more elements of a list
with open('out.txt', 'r+') as f:
data = mmap.mmap(f.fileno(),0)
ips = re.findall(b"(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})", data)[0].split(b",")
print(ips)
这部分代码打开一个包含大量行的文件,此正则表达式在该文件中查找 ips。 (我使用mmap来避免内存错误)
这是列表 "ips",如您所见,只有一个元素的 ips 以逗号分隔:
[b'41.39.180.122', b'192.28.64.246', b'213.82.176.107', b'3.120.158.39', b'5.189.139.56', b'178.128.36.166', b'203.117.94.11', b'5.79.119.182', b'52.48.41.230', b'81.169.129.6', b'178.114.8.24', b'67.20.116.110', b'205.201.139.164', b'180.215.241.68', etc etc ]
我尝试使用 split(b",") 但我得到了这个输出,第一个 IP 被正确打印,但随后...
['41.39.180.122']
[
b
'
8
0
'
,
etc etc
编辑(固定):
with open('out.txt', 'r+') as f:
data = mmap.mmap(f.fileno(),0)
ips = re.findall(b"(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})", data)
ipsn = []
for ip in ips:
ip = ip.split(b",")
ipsn.append(ip)
print(ipsn)
如果要拆分字节对象,需要使用字节分隔符而不是字符串分隔符。所以你应该使用 .split(b",")
.
而不是 .split(",")
with open('out.txt', 'r+') as f:
data = mmap.mmap(f.fileno(),0)
ips = re.findall(b"(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})", data)[0].split(b",")
print(ips)
这部分代码打开一个包含大量行的文件,此正则表达式在该文件中查找 ips。 (我使用mmap来避免内存错误)
这是列表 "ips",如您所见,只有一个元素的 ips 以逗号分隔:
[b'41.39.180.122', b'192.28.64.246', b'213.82.176.107', b'3.120.158.39', b'5.189.139.56', b'178.128.36.166', b'203.117.94.11', b'5.79.119.182', b'52.48.41.230', b'81.169.129.6', b'178.114.8.24', b'67.20.116.110', b'205.201.139.164', b'180.215.241.68', etc etc ]
我尝试使用 split(b",") 但我得到了这个输出,第一个 IP 被正确打印,但随后...
['41.39.180.122']
[
b
'
8
0
'
,
etc etc
编辑(固定):
with open('out.txt', 'r+') as f:
data = mmap.mmap(f.fileno(),0)
ips = re.findall(b"(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})", data)
ipsn = []
for ip in ips:
ip = ip.split(b",")
ipsn.append(ip)
print(ipsn)
如果要拆分字节对象,需要使用字节分隔符而不是字符串分隔符。所以你应该使用 .split(b",")
.
.split(",")