Які типи рядків не будуть видно і підходять для обробки низу спідниць та штанів

1. Упорядкування даних

Електронні таблиці мають потужні інструменти для упорядкування і фільтрації великих обсягів взаємозалежної інформації, підведення підсумків, тобто надають широкі можливості не тільки для зберігання даних і проведення розрахунків, а й для аналізу даних. Всі інструменти для роботи з електронними таблицями вимагають організованої структури для заповнюваних даних.

Щоб застосувати засоби, які призначені для обробки і аналізу даних, необхідно подати дані у вигляді списку .

Списком у редакторі Microsoft Excel називають набір рядків електронної таблиці з взаємопов’язаними однотипними даними, наприклад, список товарів на складах або список номерів телефонів і адрес абонентів.

У рядках описуються елементи даних, а в стовпцях — властивості елементів.

Список Excel розглядається як база даних, рядки і стовпці списку відповідають записам і полям в базі даних.

  • перший рядок у списку Excel має містити назви стовпців (імена полів);
  • кількість стовпців у списку має бути постійною;
  • наявність порожніх рядків і стовпців в списку є неприпустимою.

Для отримання списку потрібно виділити область даних таблиці разом з заголовками рядків і стовпців. Для зручності обробки можна помістити цей список на окремий лист.

Кожний стовпець списку містить значення певного параметра однотипних об‘єктів. Якщо при аналізі даних потрібно з‘ясувати, які об‘єкти мають найменші або найбільші значення тих чи інших параметрів, проаналізувати зміни у значеннях параметрів тощо, виконують упорядкування , тобто сортування списку.

Сортування даних в Excel — це встановлення порядку розташування рядків за даними певного стовпця (стовпців).

Упорядкування будь-яких даних застосовується для прискорення пошуку. Уявіть, як би вам довелось шукати певне слово у словнику, список слів у якому не був би упорядкований за алфавітом.
Для простого сортування даних за зростанням або спаданням потрібно клікнути по стовпцю, по даним якого треба відсортувати таблицю, і вибрати один зі способів виконання сортування:

  • на вкладці Основне в групі Редагування відкрити список Сортування й фільтр ; у списку вибрати вид сортування (рис.1);
  • на вкладці Дані в групі Сортування й фільтр натиснути кнопку (сортування за зростанням) або кнопку (сортування за спаданням) (рис.2).

Для складного сортування даних за кількома умовами слід на вкладці Дані натиснути кнопку відкриття діалогового вікна Сортування в групі Сортування й фільтр , у якому зазначити умови сортування: за даними яких стовпців, за якими параметрами, у якому порядку тощо.

Діалогове вікно Сортування діапазону призначене для вибору поля, на якому відбувається сортування. Якщо задано заголовки полів, то як позначення використовуються саме вони, якщо заголовки відсутні, то як заголовки використовуються позначення стовпців. Перше з вибраних полів визначає режим первинного сортування. Якщо за збігу значень у цьому полі існують додаткові критерії, що визначають порядок записів, то можна також задати поля для вторинного і третинного сортування. На кожному з полів сортування може виконуватися в порядку зростання чи спадання.

Порядок одночасного сортування за кількома стовпцями задає користувач у вікні Сортування , додаючи рівні сортування і обираючи стовпець для сортування зі списку заголовків.

При цьому за кожним наступним стовпцем сортуватимуться лише ті рядки, у яких у попередньому відсортованому стовпці дані збігалися.

Корисні методи для роботи з рядками¶

При автоматизації дуже часто треба буде працювати з рядками, так як конфігураційний файл, виведення команд і команди, що відправляються – це рядки. Знання різних методів (дій), які можна застосовувати до рядків, допомагає ефективно працювати з ними.

Рядки незмінний тип даних, тому всі методи, які перетворюють рядок повертають новий рядок, а вихідний рядок залишається незмінним.

Методи upper, lower, swapcase, capitalize¶

Методи upper , lower , swapcase , capitalize виконують перетворення регістра рядка:

 In [25]: string1 = 'FastEthernet'  In [26]: string1.upper()  Out[26]: 'FASTETHERNET'  In [27]: string1.lower()  Out[27]: 'fastethernet'  In [28]: string1.swapcase()  Out[28]: 'fASTeTHERNET'  In [29]: string2 = 'tunnel 0'  In [30]: string2.capitalize()  Out[30]: 'Tunnel 0' 

Методи не перетворюють вихідний рядок, а повертають новий із виконаним перетворенням. Це означає, що треба не забути записати його в якусь змінну (можна в ту саму).

 In [31]: string1 = string1.upper()  In [32]: print(string1)  FASTETHERNET 

Метод join¶

Метод join збирає список рядків в один рядок із роздільником, який вказаний перед join:

 In [16]: vlans = ['10', '20', '30']  In [17]: ','.join(vlans)  Out[17]: '10,20,30' 

Метод count¶

Метод count використовується для підрахунку того, скільки разів символ або підрядок зустрічаються у рядку:

 In [33]: string1 = 'Hello, hello, hello, hello'  In [34]: string1.count('hello')  Out[34]: 3  In [35]: string1.count('ello')  Out[35]: 4  In [36]: string1.count('l')  Out[36]: 8 

Метод find¶

Методу find можна передати підрядок або символ, і він покаже, на якій позиції знаходиться перший символ підрядка (перший збіг):

 In [37]: string1 = 'interface FastEthernet0/1'  In [38]: string1.find('Fast')  Out[38]: 10  In [39]: string1[string1.find('Fast')::]  Out[39]: 'FastEthernet0/1' 

Якщо збіг не виявлено, метод find повертає -1 .

Методи startswith, endswith¶

Перевірка на те, чи починається чи закінчується рядок на певні символи (методи startswith , endswith ):

 In [40]: string1 = 'FastEthernet0/1'  In [41]: string1.startswith('Fast')  Out[41]: True  In [42]: string1.startswith('fast')  Out[42]: False  In [43]: string1.endswith('0/1')  Out[43]: True  In [44]: string1.endswith('0/2')  Out[44]: False 

Методам startswith і endswith можна передавати кілька значень (обов’язково як кортеж):

 In [1]: "test".startswith(("r", "t"))  Out[1]: True  In [2]: "test".startswith(("r", "a"))  Out[2]: False  In [3]: "rtest".startswith(("r", "a"))  Out[3]: True  In [4]: "rtest".endswith(("r", "a"))  Out[4]: False  In [5]: "rtest".endswith(("r", "t"))  Out[5]: True 

Метод replace¶

Заміна послідовності символів у рядку на іншу послідовність (метод replace ):

 In [5]: string1 = 'FastEthernet0/1'  In [6]: string1.replace('Fast', 'Gigabit')  Out[6]: 'GigabitEthernet0/1'  In [7]: line = "aabb.cc10.a1a0"  In [8]: line.replace("a", "A")  Out[8]: 'AAbb.cc10.A1A0' 

Метод strip¶

У рядку часто будуть спеціальні символи: символ нового рядка, пробіли, таби. Метод strip дозволяє видалити ці символи на початку та в кінці рядка.

 In [47]: string1 = '\n\tinterface FastEthernet0/1\n'  In [48]: print(string1)  interface FastEthernet0/1  In [49]: string1  Out[49]: '\n\tinterface FastEthernet0/1\n'  In [50]: string1.strip()  Out[50]: 'interface FastEthernet0/1' 

За замовчуванням метод strip забирає пробілові символи. Цей набір символів містить: \t\n\r\f\v .

Методу strip можна передати як аргумент будь-які символи. Тоді на початку та в кінці рядка будуть видалені всі символи, які були вказані у рядку:

 In [51]: ad_metric = '[110/1045]'  In [52]: ad_metric.strip('[]')  Out[52]: '110/1045' 

Метод strip прибирає вказані символи на початку і в кінці рядка. Якщо необхідно прибрати символи лише ліворуч або праворуч, можна використовувати, відповідно, методи lstrip і rstrip.

Метод split¶

Метод split розбиває рядок на частини, використовуючи як роздільник якийсь символ (або символи) та повертає список рядків:

 In [53]: string1 = 'switchport trunk allowed vlan 10,20,30,100'  In [54]: commands = string1.split()  In [55]: print(commands)  ['switchport', 'trunk', 'allowed', 'vlan', '10,20,30,100'] 

У прикладі вище string1.split розбиває рядок за пробілом і повертає список рядків. Список записаний у змінну commands.

За замовчуванням як роздільник використовуються пробільні символи (пробіли, таби, символ нового рядка), але в дужках можна вказати будь-який роздільник:

 In [56]: vlans = commands[-1].split(',')  In [57]: print(vlans)  ['10', '20', '30', '100'] 

У списку commands останній елемент – це рядок з вланами, тому використовується індекс -1 . Потім рядок розбивається на частини за допомогою split commands[-1].split(‘,’) . Оскільки, як роздільник зазначена кома, отримано такий список [’10’, ’20’, ’30’, ‘100’] .

Приклад поділу адреси на октети:

 In [10]: ip = "192.168.100.1"  In [11]: ip.split(".")  Out[11]: ['192', '168', '100', '1'] 

Корисна особливість методу split з роздільником за замовчуванням – рядок не лише поділяється до списку рядків за пробіловими символами, але пробілові символи також видаляються на початку та наприкінці рядка:

 In [58]: string1 = ' switchport trunk allowed vlan 10,20,30,100-200\n\n'  In [59]: string1.split()  Out[59]: ['switchport', 'trunk', 'allowed', 'vlan', '10,20,30,100-200'] 

У методу split є ще одна хороша особливість: за замовчуванням метод розбиває рядок не за одним пробіловим символом, а за будь-якою кількістю. Це буде, наприклад, дуже корисним при обробці команд show:

 In [60]: sh_ip_int_br = "FastEthernet0/0 15.0.15.1 YES manual up up"  In [61]: sh_ip_int_br.split()  Out[61]: ['FastEthernet0/0', '15.0.15.1', 'YES', 'manual', 'up', 'up'] 

А ось так виглядає поділ того ж рядка, коли один пробіл використовується як роздільник:

 In [62]: sh_ip_int_br.split(' ')  Out[62]:  ['FastEthernet0/0', '', '', '', '', '', '', '', '', '', '', '', '15.0.15.1', '', '', '', '', '', '', 'YES', 'manual', 'up', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'up']