我有一个正在运行for循环的字符串列表。逻辑一直没有问题,但是我必须添加一个新的第一条if
语句来检查其中的字符串长于特定长度的索引。即使我的某些长度显示的长度超过60,我似乎也无法使该语句匹配。在这里我在做什么错了?
代码如下:
for idx, x in enumerate(final_vlan_list_build2):
length = len(final_vlan_list_build2[idx])
print(length)
print(type(length))
if length >= 60:
final_vlan_list_build2[idx] = final_vlan_list_build2[idx].replace(
final_vlan_list_build2[idx], final_vlan_list_build2[idx] + " default 1 none qtagged")
elif 'qtagged' in x:
final_vlan_list_build2[idx] = final_vlan_list_build2[idx]
elif 'qtagged' and 'default' not in x:
final_vlan_list_build2[idx] = final_vlan_list_build2[idx].replace(
final_vlan_list_build2[idx], final_vlan_list_build2[idx] + " default 1 none qtagged")
else:
final_vlan_list_build2[idx] = final_vlan_list_build2[idx].replace(
final_vlan_list_build2[idx], (final_vlan_list_build2[idx] + ' none qtagged'))
print(final_vlan_list_build2)
仅供参考,每个索引的长度肯定显示超过60:
10
<class 'int'>
10
<class 'int'>
32
<class 'int'>
32
<class 'int'>
50
<class 'int'>
30
<class 'int'>
32
<class 'int'>
76
<class 'int'>
54
<class 'int'>
33
<class 'int'>
55
<class 'int'>
77
<class 'int'>
31
<class 'int'>
33
<class 'int'>
33
<class 'int'>
31
<class 'int'>
71
<class 'int'>
31
Partial input list:
['int g1/0/1', 'int g1/0/2', 'int g1/0/3 3999 default ', 'int g1/0/4 3999 default ', 'int g1/0/5 261 qtagged
368 default ', 'int g1/0/6 368 default ', 'int g1/0/7 3999 default ', 'int g1/0/8 258 qtagged 261
qtagged 3999 default ', 'int g1/0/9 261 qtagged 3999 default ', 'int g1/0/10 368 default ', 'int g1/0/11 261 qtagged 3999 default ', 'int g1/0/12 258 qtagged 261 qtagged 3999 default
', 'int g1/0/13 367 default ', 'int g1/0/14 3999 default ', 'int g
...
The partial output list:
['int g1/0/1 default 1 none qtagged', 'int g1/0/2 default 1 none qtagged', 'int g1/0/3 3999 default none qtagged', 'int g1/0/4 3999 default none qtagged', 'int g1/0/5 261 qtagged 368 default ', 'int g1/0/6
368 default none qtagged', 'int g1/0/7 3999 default none qtagged', 'int g1/0/8 258 qtagged 261 qtagged 3999 default default 1 none qtagged', 'int g1/0/9 261 qtagged 3999 default ', 'int g1/0/10 368 default none qtagged', 'int g1/0/11 261 qtagged 3999 default ', 'int g1/0/12 258 qtagged 261 qtagged 3999 default default 1 none qtagged',
.....
答案 0 :(得分:0)
您的问题不是因为如果长度> 60且x中没有'qtagged'和'default'时您执行相同的操作吗? 因此,您的结果不是因为长度,而是因为if'qtagged'和'default'不在x ...
答案 1 :(得分:0)
对不起,如果这很糟糕,但是您的代码确实很难阅读。这是同一件事,但有2处更改。首先,如果长度大于60,则将其替换为“ default 1 none qtagged”;其次,我将逻辑'qtagged' and 'default' not in x
替换为'qtagged' not in x and 'default' not in x
,因为这是我假设您要尝试的做法。
for idx, x in enumerate(final_vlan_list_build2):
if len(final_vlan_list_build2[idx]) >= 60:
final_vlan_list_build2[idx] = " default 1 none qtagged"
elif 'qtagged' in x:
pass
elif 'qtagged' not in x and 'default' not in x:
final_vlan_list_build2[idx] += " default 1 none qtagged"
else:
final_vlan_list_build2[idx] += ' none qtagged'
print(final_vlan_list_build2)