Работата със списък в Python може да бъде една от най-често срещаните задачи.

Не всичко обаче идва при вас под формата на списък като вход.

Може да има моменти, когато взаимодействате с външен API или четете от наследена база данни, или форматирате данните в CSV файл и по някаква причина част от данните там не е в желания формат, който бихте искали да бъде.

Нека приемем, че това е низ и вие искате да го конвертирате в списък.

Може да бъде полезно да се опитате да приложите това сами, когато започвате своето пътуване с кодиране, тъй като искате да получите възможно най-много практика.

Ако обаче имате опит и просто искате да свършите работата, по-добре е да спестите времето си, като използвате решенията на други хора.

Да започваме…

Използвайте split()

Първият начин да направите това е да използвате метода split(). Този метод може да бъде извикан от низ и може също да приеме разделител като параметър.

Ако не предоставите никакъв разделител, този по подразбиране ще бъде всяко празно пространство, което е там.

Нека вземем пример, за да илюстрираме това:

Тъй като изобщо не сме включили никакъв разделител, този метод split()ще открие всяко празно пространство, като множество интервали, раздели и дори нови редове:

Използвайте split() с разделители

Можете също така да конвертирате низове в разделители въз основа на персонализиран разделител по ваш избор, който имате.

Да приемем, че получавате низ от стойности, разделени със запетая.

Както може би се досещате, просто трябва да напишете запетая като разделител и след това ще имате списък със стойности.

Ето един пример:

Използвайте ast.literal_eval()

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

Склонни сте да ставате тревожни, чувствате, че не улавяте всеки възможен ръбов случай, въпреки че прекарвате значително време в работа.

Например, нека приемем, че имаме вход като следния:

input = "[10, 32, 49, 15]"

Вероятно не се нуждаете от низ, а от списък с числа, като следното:

input = [10, 32, 49, 15]

Може би дори сте имали по-сложен израз, докато четете от CSV файл или анализирате отговора от извикване на API:

example_input = "[[10, 32, 49, 15], [1, 13, 5, 4, 9]]"

Вместо да се опитвате да отделяте твърде много време за това, опитвайки се също да мислите за крайни случаи на лист хартия, за да включите всеки възможен случай, можете да застанете на раменете на гиганти и да използвате метода literal_eval()от модула ast:

Вместо да се занимавате със сложни регулярни изрази, всичко, което трябва да направите, е да импортирате модула ast и след това да извикате неговия метод literal_eval:

Можем да опитаме и да видим как наистина работи:

Това буквално може да спести много главоболия.

Както можете да видите, не е толкова сложно.

Няма нужда да преоткривате колелото, като използвате фантастични регулярни изрази.

Застанете на раменете на гиганти, които са правили неща преди вас.

Надявам се, че сте намерили това за полезно. Не забравяйте да ми споделите вашите мисли в коментарите.

Повече съдържание на plainenglish.io