При разделяне на низ, разделен със запетая, на списък в Python, ако между тях няма интервали, ще работи само функцията split(). Ако има интервали, е полезно да се комбинира с strip(), за да се премахнат допълнителните интервали. Освен това използването на нотацията за разбиране на списък е интелигентен начин за писане.
В този раздел първо ще обясним следното.
- Разделяне на низ със зададен разделител и връщането му като списък
split()
- Премахване на допълнителни символи от началото и края на низ.
strip()
- Запис за разбиране на списък за прилагане на функции и методи към елементи на списък.
Той също така показва как да създадете списък от низове, разделени с интервали и запетаи, като премахнете интервалите, както е показано по-долу.'one, two, three'
Освен това ще обсъдим следното
- Как да го получите като списък от числа
- Как да използвате join(), за да обедините списък и да го превърнете отново в низ
- split(): Разделяне на низ със зададен разделител и връщането му като списък
- strip(): Премахване на допълнителни символи от началото и края на низ.
- Запис за разбиране на списък: прилагане на функции и методи към елементи на списък
- Получаване като списък от числа
- join(): Сливане на списък и получаването му като низ
split(): Разделяне на низ със зададен разделител и връщането му като списък
С метода split() за низове можете да разделите низ с определен разделител и да го получите като списък (масив). Зададеният разделител може да бъде посочен със следния аргумент.sep
Ако аргументът sep е пропуснат и не е посочен разделител, символът разделя низа по интервали и връща списък. Последователните интервали и табулатори също ще разделят списъка, така че ако искате да създадете списък от низове с табулатори, можете да използвате split() без аргумента.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
Ако в аргумента sep е посочен разделител, той разделя списъка с този низ и връща списък.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
В случай на низ, разделен със запетая, ако няма допълнителен бял интервал, няма проблем, но ако стартирате функцията split() със запетая като разделител за низ, разделен със запетая + бял интервал, ще получите списък с низове, в чието начало е оставен бял интервал.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Можете да използвате запетая + интервал като разделител, както следва, но това няма да работи, ако броят на интервалите в оригиналния низ е различен.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Методът strip(), който ще бъде обяснен по-нататък, може да се използва за работа с два интервала.
strip(): Премахване на допълнителни символи от началото и края на низ.
strip() е метод за премахване на допълнителни символи от началото и края на низ.
Ако аргументът е пропуснат, се връща нов низ с премахнати бели символи. Самият оригинален низ не се променя.
s = ' one ' print(s.strip()) # one print(s) # one
Ако като аргумент е посочен низ, символите, съдържащи се в низ, ще бъдат премахнати.
s = '-+-one-+-' print(s.strip('-+')) # one
В този случай интервалите не се премахват. Затова, ако искате да премахнете и белите интервали, подайте низ, включващ интервали, като аргумент, както е показано по-долу.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
Функцията strip() обработва и двата края, но са налични и следните функции.
lstrip()
:Процесът е само началотоrstrip()
:Обработвайте само края на реда.
Запис за разбиране на списък: прилагане на функции и методи към елементи на списък
Ако искате да приложите функция или метод към елементите на списък, е разумно да използвате записа за разбиране на списък вместо цикъла for, ако искате да получите списъка накрая.
- Свързани статии:Използване на нотация за разбиране на списъци в Python
Тук прилагаме функцията strip() към списъка, получен от разделянето на низа с функцията split(). Допълнителните бели полета в низ, разделен със запетая и съдържащ бели полета, могат да бъдат премахнати, за да се получи списък.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Когато това се приложи към празен низ, може да се получи списък с един празен низ като елемент.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Ако искате да получите празен списък за празен низ, можете да създадете условен клон в нотацията за разбиране на списък.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Също така, ако липсва елемент, разделен със запетая, както е описано по-горе, първият метод ще го изпише като празен символен низ.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Ако искате да пренебрегнете липсващите части, можете да създадете условен клон в нотацията за разбиране на списък.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Получаване като списък от числа
Ако искате да получите низ от числа, разделени със запетая, като списък от числа, а не като низ, приложете int() или float(), за да преобразувате низа в число в запис за разбиране на списък.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join(): Сливане на списък и получаването му като низ
В обратния случай, ако искате да обедините списък и да получите низове, разделени с определен разделител, използвайте метода join().
Лесно е да се допусне грешка, но имайте предвид, че join() е метод за символни низове, а не за списъци. Списъкът се задава като аргумент.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
Можете да го напишете на един ред по следния начин.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Ако искате само да промените фиксиран разделител, по-лесно е да го замените с метода replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three