Python, split, щоб розділити рядок, розділений комами, видалити пробіли та перетворити на список

Бізнес

Якщо розділений комами рядок розбивається на список у 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