Python. Функції розбиття рядків на частини та утворення нових рядків з допомогою кортежів та списків

Функції розбиття рядків на частини та утворення нових рядків з допомогою кортежів та списків


Зміст


1. Функція str.join(). Збірка рядка зі списку

Функція str.join() повертає рядок, який є об’єднанням рядків в ітерованому об’єкті. Якщо в ітерованому об’єкті є не рядкові значення, то функція згенерує виключення TypeError.

Згідно з документацією Python використання функції має наступний вигляд:

s1 = s2.join(iterable)

де

  • s1 – рядок, який створюється у результаті об’єднання рядків ітерованого об’єкту iterable;
  • s2 – рядок, який служить розділювачем при об’єднанні рядків.

Приклад.

# Функція str.join() - збірка рядка зі списку

# Список рядків
lst = ['abc', 'def', 'ghi']

s1 = ''
s2 = s1.join(lst) # s2 = 'abcdefghi'

# Список символів
SYMBOLS = list("Hello") # ITEMS = ['H', 'e', 'l', 'l', 'o']

s1 = ""
s3 = s1.join(SYMBOLS) # s3 = 'Hello'
s4 = str.join(s1, SYMBOLS) # s4 = 'Hello'

# Розділювач - рядок ' => '
s1 = ' => '
s5 = s1.join(['012', '345', '678']) # s5 = '012 => 345 => 678'

 

2. Функція str.partition(). Розбити рядок на кортеж починаючи з початку рядка

Функція str.partition() розбиває рядок на кортеж з 3-х елементів на основі заданого символу-розділювача. На відміну від функції str.rpartition() у даній функції рядок переглядається з початку.

Загальна форма використання функції наступна:

t = str.partition(sep)

де

  • str – рядок, який розглядається на предмет розбиття;
  • t – результуючий кортеж, що складається з 3-х рядків. Перший рядок – це частина рядка перед розділювачем sep. Другий рядок – це сам розділювач sep. Третій рядок – це частина рядка після розділювача sep;
  • sep – символ-розділювач.

Якщо розділювач не знайдено, то функція повертає кортеж з 3-х рядків, у якому першим слідує сам рядок, потім два пусті рядки.

Приклад.

# Функція str.partition() - розбиває рядок на основі символу-розділювача

# 1. Випадок, коли розділювач знайдено
s1 = 'abc,def,ghi'
s2 = s1.partition(',') # s2 = ('abc', ',', 'def,ghi')

s2 = 'abcdef'.partition('d') # s2 = ('abc', 'd', 'ef')

s1 = '012+345'
s2 = str.partition(s1, '+') # s2 = ('012', '+', '345')

# 2. Випадок, коли розділювача не знайдено
s1 = '12345'
s2 = s1.partition('=') # s2 = ('12345', '', '')

# 3. Випадок, коли декілька розділювачів - рядок переглядається з початку
s1 = '012+345+65+89'
s2 = s1.partition('+') # s2 = ('012', '+', '345+65+89')

 

3. Функція str.rpartition(). Розбити рядок на кортеж починаючи з кінця рядка

Функція str.rpartition() розбиває рядок на кортеж з 3-х елементів на основі заданого символ-розділювача. На відміну від функції str.partition() у даній функції рядок переглядається з кінця.

Загальна форма використання функції наступна:

t = str.rpartition(sep)

де

  • str – рядок, який розглядається на предмет розбиття;
  • t – результуючий кортеж, що складається з 3-х рядків. Перший рядок – це частина рядка перед розділювачем sep. Другий рядок – це сам розділювач sep. Третій рядок – це частина рядка після розділювача sep;
  • sep – символ-розділювач.

Якщо розділювач не знайдено, то функція повертає кортеж з 3-х рядків, у якому перші два рядки пусті, третій рядок – сам рядок.

Приклад.

# Функція str.rpartition() - розбиває рядок на основі символу-розділювача

# 1. Випадок, коли розділювач знайдено
s1 = 'abc,def,ghi'
s2 = s1.rpartition(',') # s2 = ('abc,def', ',', 'ghi')

s2 = 'abcdef'.rpartition('d') # s2 = ('abc', 'd', 'ef')

s1 = '012+345'
s2 = str.rpartition(s1, '+') # s2 = ('012', '+', '345')

# 2. Випадок, коли розділювача не знайдено
s1 = '12345'
s2 = s1.rpartition('=') # s2 = ('', '', '12345')

# 3. Випадок, коли декілька розділювачів - рядок переглядається з кінця
s1 = '012+345+65+89'
s2 = s1.rpartition('+') # s2 = ('012+345+65', '+', '89')


 

4. Функція str.rsplit(). Сформувати список слів на основі символу-розділювача

Функція str.rsplit() формує список слів, сформованих з деякого рядка, на основі символу-розділювача. Функція працює так само як і функція str.split() тільки з тією відмінністю, що сформовані слова розділяються справа наліво.

Загальна форма використання функції наступна:

setStr = str.rsplit(sep = None, maxsplit = -1)

тут

  • setStr – результуючий список рядків (слів), які формуються з рядка str;
  • str – вихідний рядок, який розбивається на множину слів;
  • sep – розділювач слів, який може складатися з одного або декількох символів. Якщо заданий розділювач sep, то самі розділювачі не групуються разом і вважаються розділювачами пустих рядків. Якщо спробувати розділити пустий рядок заданим розділювачем, то повертається список, що містить пустий рядок [”];
  • maxsplit – максимальна кількість розбиттів, на яку може бути розбитий рядок str. Наприклад, якщо maxsplit=2, то список буде містити не більше 3 елементів (maxsplit+1 елементів). Якщо значення maxsplit не вказане або рівне -1, то кількість розділень необмежено, у цьому випадку виконуються всі можливі розбиття рядка.

Приклад.

# Функція str.rsplit() - розбиття рядка за символом-розділювачем

# 1. Виклик функції без параметрів sep та maxsplit
s1 = 'a,b,c,d'
s2 = s1.rsplit() # s2 = ['a,b,c,d'] - одне слово, береться до уваги пробіл

s1 = 'a b c def'
s2 = s1.rsplit() # s2 = ['a', 'b', 'c', 'def'] - 4 слова, враховано пробіл

s1 = 'abc hello,+ fgh 0123 '
s2 = str.rsplit(s1) # s2 = ['abc', 'hello,+', 'fgh', '0123']

# 2. Виклик функції з параметром sep
s1 = 'a,b,c,d'
s2 = s1.rsplit(',') # s2 = ['a', 'b', 'c', 'd'], символ-розділювач ','

# символ-розділювач '!='
s2 = 'a!=b!=c!=d+5'.rsplit('!=') # s2 = ['a', 'b', 'c', 'd+5']

# 3. Виклик функції з параметрами sep, maxsplit
# при такому виклику результат функції відмінний від результату split()
s1 = 'a,b,c,d,e'
s2 = s1.split(',', 2) # s2=['a', 'b', 'c,d,e'] - з початку до кінця
s3 = s1.rsplit(',', 2) # s3=['a,b,c', 'd', 'e'] - з кінця до початку

s1 = 'a+b+c+d'
s2 = s1.split('+', 2) # s2 = ['a', 'b', 'c+d'] - з початку до кінця
s3 = s1.rsplit('+', 2) # s3 = ['a+b', 'c', 'd'] - з кінця до початку

 

5. Функція str.split(). Розбиття рядка за символом-розділювачем

Функція str.split() отримує рядок і повертає список слів, сформованих з цього рядка, які розділяються (виділяються) заданим символом-розділювачем.

Згідно документації Python загальна форма використання функції наступна:

setStr = str.split(sep = None, maxsplit = -1)

тут

  • setStr – результуючий список рядків (слів), які формуються з рядка str;
  • str – вихідний рядок, який розбивається на множину слів;
  • sep – розділювач слів, який може складатися з одного або декількох символів. Якщо заданий розділювач sep, то самі розділювачі не групуються разом і вважаються розділювачами пустих рядків. Якщо спробувати розділити пустий рядок заданим розділювачем, то повертається список, що містить пустий рядок [”];
  • maxsplit – максимальна кількість розбиттів, на яку може бути розбитий рядок str. Наприклад, якщо maxsplit=2, то список буде містити не більше 3 елементів (maxsplit+1 елементів). Якщо значення maxsplit не вказане або рівне -1, то кількість розділень необмежено, у цьому випадку виконуються всі можливі розбиття рядка.

Приклад.

# Функція str.split() - розбиття рядка за символом-розділювачем

# 1. Виклик функції без параметрів sep та maxsplit
s1 = 'a,b,c,d'
s2 = s1.split() # s2 = ['a,b,c,d'] - одне слово, береться до уваги пробіл

s1 = 'a b c def'
s2 = s1.split() # s2 = ['a', 'b', 'c', 'def'] - 4 слова, враховано пробіл

s1 = 'abc hello,+ fgh 0123 '
s2 = str.split(s1) # s2 = s2 = ['abc', 'hello,+', 'fgh', '0123']

# 2. Виклик функції з параметром sep
s1 = 'a,b,c,d'
s2 = s1.split(',') # s2 = ['a', 'b', 'c', 'd'], символ-розділювач ','

# символ-розділювач '=='
s2 = 'a==b==c==d+5'.split('==') # s2 = ['a', 'b', 'c', 'd+5']

# 3. Виклик функції з параметрами sep, maxsplit
s1 = 'a,b,c,d,e'
s2 = s1.split(',', 2) # s2=['a', 'b', 'c,d,e'] - максимум 2 розбиття (3 слова)

s1 = 'a+b+++c+def++ghi'
s2 = s1.split('+',3) # s2=['a', 'b', '', '+c+def++ghi'] - символ '+' замінено на ''

 

6. Функція str.splitlines(). Отримати список рядків на основі рядка, що містить символи-розділювачі рядків

Функція str.splitlines() формує список рядків на основі заданого рядка таким чином, що враховуються символи які служать розділювачами рядка.

Згідно документації Python загальна форма використання функції наступна:

strList = str.splitlines([keepends])

де

    • strList – результуючий список рядків розділених на межах рядка;
  • str – рядок, що містить символи, які розділяють рядки. До таких символів належать, наприклад, символ ‘\n’ нового рядка (див. нижче таблицю);
  • keepends – необов’язковий параметр, який визначає включення символів-розділювачів у результуючий рядок strList. Якщо keepends = True, то символи-розділювачі включаються в результуючий рядок.

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

Python. Символи-розділювачі в рядку. Таблиця

Приклад.

# Функція str.splitlines()

# 1. Виклик функції без параметрів
s1 = 'ab\ncd\ref'
s2 = s1.splitlines() # s2 = ['ab', 'cd', 'ef']

s1 = '012\x1d345\x1e6789'
s2 = str.splitlines(s1) # s2 = ['012', '345', '6789']

s2 = 'abc\u2028defg'.splitlines() # s2 = ['abc', 'defg']

# 2. Виклик функції з параметром - включені символи-розділювачі
s1 = 'ab\ncd\r\nef'
s2 = s1.splitlines(True) # s2 = ['ab\n', 'cd\r\n', 'ef']

s2 = 'abc\u2029def'.splitlines(True) # s2 = ['abc\u2029', 'def']

s2 = '\n\n\r\n'.splitlines(False) # s2 = ['', '', '']
s2 = '\n\n\r\n'.splitlines(True) # s2 = ['\n', '\n', '\r\n']

 


Зв’язані теми