如何将ips = "10.0.0.2-10.0.2.3;5.5.16.4;169.168.2.266-169.168.2.288;169.168.2.289 "中的ip去重、计算总个数、将连续的ip合并用-连接,不连续的用;连接
时间: 2024-10-24 19:17:40 浏览: 22
将给定的IP字符串去重、计数并合并,你可以按照以下步骤操作:
1. **去重**:
使用Python的`set()`函数可以快速去除重复元素,因为集合中的元素都是唯一的。
```python
ips = "10.0.0.2-10.0.2.3;5.5.16.4;169.168.2.266-169.168.2.288;169.168.2.289"
unique_ips = ips.split(';') # 先分割成列表
unique_ips = [ip.strip() for ip in unique_ips if '-' not in ip] # 去除单个IP
unique_ips = list(set(unique_ips)) # 去重
```
2. **计算总个数**:
可以直接获取去重后的列表长度。
```python
total_count = len(unique_ips)
```
3. **合并连续的IP**:
使用循环检测连续IP,并使用`join()`方法连接它们。
```python
result = []
temp_ip = ''
for ip in unique_ips:
if '-' in ip:
start, end = ip.split('-')
temp_ip += start + '-'
else:
temp_ip += ip + ';'
if temp_ip[-1] == ';': # 如果上一个是分隔符,则添加到结果
result.append(temp_ip[:-1])
temp_ip = '' # 清空temp_ip
# 检查最后一次循环是否有剩余的非连续IP
if temp_ip:
result.append(temp_ip)
merged_ips = ''.join(result) # 将所有连续的IP合并为单一字符串
```
最终结果会是一个去重后合并了连续IP的新字符串和总IP的数量。完整的Python代码示例如下:
```python
ips = "10.0.0.2-10.0.2.3;5.5.16.4;169.168.2.266-169.168.2.288;169.168.2.289"
# ... (上述步骤)
merged_ips = ''.join(result)
total_count = len(unique_ips)
result = f"去重后的IP:{merged_ips},总数:{total_count}"
print(result)
阅读全文