«если» l oop не соответствует тесту длины строки - PullRequest
0 голосов
/ 20 января 2020

У меня есть список строк, для которых я запускаю l oop. Лог c работал без проблем, но мне пришлось добавить новый первый оператор 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',
.....

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Извините, если это дерьмо, но ваш код действительно трудно прочитать. Это то же самое с 2 изменениями. Во-первых, если длина больше 60, он заменяет этот элемент на «default 1 none qtagged», а во-вторых, я заменил logi c '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)
0 голосов
/ 20 января 2020

Ваша проблема не в том, что вы делаете одно и то же действие, если длина> 60 и если 'qtagged' и 'default' не в x? Таким образом, ваш результат не из-за длины, а из-за, если 'qtagged' и 'default' не в x ...

...