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']

 


Связанные темы