<p>元组的第二、第三等元素看起来像ip地址。您可以使用正则表达式来识别特定的格式。<em>(我冒着风险假设你在玩ip地址)</em>。你知道吗</p>
<p>这里有另一个解决方案,比<a href="https://stackoverflow.com/a/53624980/10239789">Rafael's</a>或<a href="https://stackoverflow.com/a/53625086/10239789">RoadRunner's</a>更简洁,但是允许任意数量的地址。你知道吗</p>
<pre><code>import re
test = [
'Vlan101',
'1.1.1.0/24',
'Vlan111',
'2.1.1.0/24',
'Vlan701',
'3.1.1.0/24',
'Vlan703',
'4.1.1.0/24',
'5.5.5.0/24']
result = [[]] # we first store the stuff as lists to allow for appending
for item in test:
# matches ipaddresses with xxx.xxx.xxx.xxx/xx
if re.match(r'\d{,3}\.\d{,3}\.\d{,3}\.\d{,3}/\d+', item):
result[-1].append(item) # appends an ipaddress
else:
result.append([item]) # appends a new 'Vlan...' (i.e. anything but an ipaddress)
tups = list(map(tuple, result)) # cast each of the lists into tuples
print(result)
print(tups)
</code></pre>
<p>输出:</p>
<pre><code>[[], ['Vlan101', '1.1.1.0/24'], ['Vlan111', '2.1.1.0/24'], ['Vlan701', '3.1.1.0/24'], ['Vlan703', '4.1.1.0/24', '5.5.5.0/24']]
[(), ('Vlan101', '1.1.1.0/24'), ('Vlan111', '2.1.1.0/24'), ('Vlan701', '3.1.1.0/24'), ('Vlan703', '4.1.1.0/24', '5.5.5.0/24')]
</code></pre>
<p>空的<code>[]</code>和<code>()</code>在开头,以防您的<code>test</code>列表立即以地址开始(它是为<code>result[-1]</code>提供一个后备)。你知道吗</p>
<p>如果你想删除这些结果,只需做一个切片</p>
<pre><code>print(tups[1:])
</code></pre>
<p>输出:</p>
<pre><code>[('Vlan101', '1.1.1.0/24'), ('Vlan111', '2.1.1.0/24'), ('Vlan701', '3.1.1.0/24'), ('Vlan703', '4.1.1.0/24', '5.5.5.0/24')]
</code></pre>