Найти - Пользователи
Полная версия: Форматирование Списка в читаемый вывод
Начало » Python для новичков » Форматирование Списка в читаемый вывод
1 2
timofmax
py.user.next
Спасибо за пример. вот мое хреновое решение:

 ospf_route = "O        10.0.24.0/24 [110/41] via 10.0.13.3, 3d18h, FastEthernet0/0"
ospf = ospf_route.replace('O', 'OSPF')
ospf = ospf.replace(',', '')
ospf = ospf.strip().split()
# type(ospf)
# builtins.list
ospf.remove('via')
print(ospf)
parameters = """
Protocol:          
Prefix:            
AD/Metric:         
Next-Hop:          
Last update:       
Outbound Interface:
"""
parameters = parameters.split()
#Так как при разбивке split() Last update и Outbound Interface поделились на 2 строки удалим ненужные части
parameters.remove('update:')
parameters.remove('Interface:')
#Узнаем index Last чтобы потом его удалить и на его место вставить цельный "Last update"
m = parameters.index('Last')
parameters.pop(m)
parameters.insert(m, 'Last update')
#Узнаем index Outbound чтобы потом его удалить и на его место вставить цельный "Outbound Interface"
m = parameters.index('Outbound')
parameters.pop(m)
parameters.insert(m, "Outbound Interface")
#смотрим для самопроверки, любуемся, убеждаемся что одинаковой длинны
ospf
parameters
len(ospf)
len(parameters)
#ну и собсна решение в лоб
i = str(list(zip(parameters, ospf)))
i = i.replace('[','').replace(']','').replace('(','').replace(')','').replace('\'','')
i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12 = i.split(',')
print("\n{:24}{:24}\n{:24}{:24}\n{:24}{:24}\n{:24}{:24}\n{:24}{:24}\n{:24}{:24}\n".format(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12))


только вопрос почему отступ у первой строки получается, слово Protocol..
 Protocol:                OSPF                   
 Prefix:                 10.0.24.0/24           
 AD/Metric:              110/41                 
 Next-Hop:               10.0.13.3              
 Last update             3d18h                  
 Outbound Interface      FastEthernet0/0        
py.user.next
timofmax
только вопрос почему отступ у первой строки получается
timofmax
 i = str(list(zip(parameters, ospf)))
Преобразование списка (и других подобных типов) в строку, а потом обработка этой строки считается вредным хаком, который никогда не используется. Его могут использовать только тогда, когда слишком сложно исправить какой-то код, а решение нужно слишком срочно. Этот хак и привёл тебя к ошибке.

Выведи i после всех замен и ты увидишь, что для человека список отображается в виде элементов, хорошо разделённых для чтения (чтобы человеку было удобнее читать). Когда ты делаешь i.split() эти пробелы после запятых остаются.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB