Python, разделяне за разделяне на низ, разделен със запетая, премахване на белите полета и преобразуване в списък

Бизнес

При разделяне на низ, разделен със запетая, на списък в Python, ако между тях няма интервали, ще работи само функцията split(). Ако има интервали, е полезно да се комбинира с strip(), за да се премахнат допълнителните интервали. Освен това използването на нотацията за разбиране на списък е интелигентен начин за писане.

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

  • Разделяне на низ със зададен разделител и връщането му като списъкsplit()
  • Премахване на допълнителни символи от началото и края на низ.strip()
  • Запис за разбиране на списък за прилагане на функции и методи към елементи на списък.

Той също така показва как да създадете списък от низове, разделени с интервали и запетаи, като премахнете интервалите, както е показано по-долу.
'one, two, three'

Освен това ще обсъдим следното

  • Как да го получите като списък от числа
  • Как да използвате 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, ако искате да получите списъка накрая.

Тук прилагаме функцията 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
Copied title and URL