Python String split () Пример
1. Введение
Манипулирование строками может быть очень важным аспектом программирования из-за разнообразия способов управления строками. И одним из таких способов манипулирования строками является разделение их по нескольким символам. Вы можете разделить строки на запятые, точки с запятой и многое другое. В нашей сегодняшней статье мы рассмотрим, как метод split
в Python может помочь манипулировать строками.
Метод split
обычно помогает решить задачу разбивки строк на более мелкие фрагменты на основе определенных строк. У вас может быть длинная строка, сгруппированная по определенному символу, и вы хотите разбить строку на основе этого символа. Вот где метод split
вступает в игру.
1.1 Синтаксис
Метод split
является частью класса String
в Python.
S.split (разделитель, maxsplit) -> Список строк
Первое, что вам нужно, это строка, которую вы хотите разделить. Затем строка, которую вы хотите использовать в качестве разделителя. Если разделитель или None
не пропущены, пробел предполагается в качестве разделителя. Затем параметр maxsplit используется для определения количества делений. По умолчанию он разделяется на максимально возможное количество строк на основе разделителя.
И в результате получается список фрагментов строки, образованных путем разбиения исходной строки на основе разделителя.
2. Примеры
Теперь давайте рассмотрим некоторые примеры метода, split
на части.
2.1 Python String split () Пример 1
Представьте, что у вас есть строка «Что мы делаем сейчас» . Эта строка представлена в памяти следующим образом:
Памятное представление строки «Что мы делаем сейчас»Теперь представьте, что у нас есть следующий код
1 2 | name = 'What Do We Do Now' name. strip( 'o' , 2 ) |
Приведенный выше код означает, что мы разбиваем строку на куски. Мы разбиваем строку везде, где видим букву «о», в данном случае буква «о» является нашим разделителем.
Теперь мы также передаем число 2. Число 2 означает, что мы можем разделить только 2 раза. Итак, как языки Python выполняют эту задачу?
Он начинается, пока не дойдет до индекса 6, где находится буква «о». Затем он разбивает фрагмент строки с индекса 0 на индекс 5 и помещает его в список.
Таким образом, первый кусок в списке будет:
1 | [ 'What D' ] |
Затем следующая вещь, которую мы делаем, это продолжается до тех пор, пока мы не найдем еще одну букву «о» в индексе 12, мы разберем фрагмент от последнего «о» в индексе 6 до индекса 12 и поместим в наш список. Теперь у нас есть 2 фрагмента строк в нашем списке.
1 | [ 'What D' , ' We D' ] |
Помните, что мы ограничили число разделений, которые мы собираемся сделать, до 2. Таким образом, на этом этапе мы прекращаем разделение и возвращаем каждую оставшуюся строку в виде одного фрагмента.
1 | [ 'What D' , ' We D' , ' Now' ] |
Вы бы поняли, что есть буква «о», которая могла бы быть разделена, но мы не могли этого сделать, потому что разделение было ограничено 2 раза.
И возвращенный окончательный список содержит только 3 фрагмента строк.
2.2 Python String split () Пример 2
Учтите, что имя студента было введено как один текст, и нам нужно разбить его на имя, фамилию и другие имена студента.
1 | studentName = 'Musa Kabuga Mailafia' |
И когда мы вызываем метод split без передачи какого-либо параметра
1 | studentName.split() |
Строка представлена в памяти как:
Строковое Представление Для studentNameПоскольку явный разделитель не используется, пробел используется в качестве разделителя по умолчанию, и разделение выполняется до конца строки, поскольку максимальное количество разделений не было явно определено.
И результат будет:
1 | [ 'Musa' , 'Kabuga' , 'Mailafia' ] |
Это означает, что имя студента по умолчанию разделяется на основе пробелов и возвращается список из трех строк.
2.3 Python String split () Пример 3
Рассмотрим другой пример, где студент передает 3 строки для своего имени, но нам нужно только разделить имя на имя и фамилию. Таким образом, мы хотим разделить только один раз. Разделить на его / ее имя и каждая другая строка является фамилией.
1 | studentName = 'Faiz Bashir Sheik' |
Затем мы вызываем метод split
, но передаем только параметр, чтобы ограничить количество строк, которые должны быть возвращены в списке.
1 | studentName.split(maxsplit = 1 ) |
Поскольку было задано максимальное количество разбиений, строка разбивается только один раз. А поскольку разделитель не был пропущен, пробел используется по умолчанию. Таким образом, результат, который будет возвращен в этом случае, будет:
1 | [ 'Faiz' , 'Bashir Sheik' ] |
2.4 Python String split () Пример 4
Рассмотрим следующее:
1 | string_value = 'How,Do,You,Do,Kabir' |
И мы хотим разделить строку, так как мы не хотим иметь запятые в строке.
Для начала мы сначала представим, как это будет выглядеть в памяти. В памяти это будет выглядеть так:
Строковое Представление Для string_value1 | string_value.split( "," ) |
И возвращенный результат будет:
1 | [ 'How' , 'Do' , 'You' , 'Do' , 'Kabir' ] |
2.
5 Python String split () Пример 5Давайте рассмотрим следующий пример
1 | student_address = '11, Malali Str; 10; Afr' |
Представьте, что вам нужен адрес, который является первым фрагментом строки перед первой точкой с запятой. Как вы продвигаетесь с этим?
Представь себе первую строку в памяти
Строковое представление для student_address Затем мы вызываем функцию split
с точкой с запятой (;) в качестве разделителя, затем максимальное расщепление, необходимое для 1. Итак, функция выглядит следующим образом:
1 | student_address.split( ';' , maxsplit = 1 ) |
И возвращенный результат будет:
1 | [ '11, Malali Str' , '10; Afr' ] |
2.
6 Python String split () Пример 6Что произойдет, если разделитель, используемый для разбиения строки, не существует в строке?
Давайте посмотрим на еще один пример.
1 | student_name = 'Alameen Ibrahim' |
И мы хотим разделить строку на основе разделителя ‘,’, и разделитель не существует в строке.
1 | student_name.split( ',' ) |
Можете ли вы угадать, что будет на выходе?
1 | [ 'Alameen Ibrahim' ] |
Список, содержащий только точную строку, которая должна была быть разделена, будет возвращен.
3. Python String split () – Заключение
Манипулирование струнами может быть очень напряженной операцией, если мы не знаем, какие инструменты использовать. Поэтому в Python одним из таких инструментов, который позволяет нам манипулировать строками, является метод split
. Это позволяет разбить строку на куски на основе разделителя, а также дает максимальное количество разбиений, которые можно выполнить в любой момент времени.
4. Загрузите исходный код
Это был пример того, как использовать метод split
в Python
Скачать
Вы можете скачать полный исходный код этого примера здесь: Пример Python String split ()
Метод Python String split() — Изучение на примере
Разбивает строку на список подстрок
Использование
Метод split()
разбивает строку по указанному разделителю и возвращает список подстрок. Если разделитель не указан, строка разбивается на пробелы.
По умолчанию split()
сделает все возможные разделения (количество разделений не ограничено). Однако, когда вы укажете maxsplit, будет сделано только заданное количество разделений.
Синтаксис
string.split(delimiter,maxsplit)
разделитель | Необязательный | Любой символ для разделения s тинг с. По умолчанию используется пробел. |
maxsplit | Необязательный | Число, указывающее, сколько разбиений нужно сделать. Значение по умолчанию: -1 (без ограничений на разбиение) |
Разделение по пробелу
Если разделитель не указан, строка разбивается по пробелу.
S = «Мир прекрасен» х = S.split() печать (х) # Выводит ['The', 'World', 'is', 'Beautiful']
Другая особенность простого вызова split()
заключается в том, что он автоматически объединяет последовательные пробелы в один разделитель и разбивает строку.
S = «Мир прекрасен» х = S.split() печать (х) # Prints ['The', 'World', 'is', 'Beautiful']
Новая строка '\n'
, tab '\t'
и возврат каретки '\r'
также считаются пробелами персонажи.
S = 'Мир\n\rпрекрасен' х = S.split() печать (х) # Выводит ['The', 'World', 'is', 'Beautiful']
Разделить по разделителю
Вы можете разделить строку, указав разделитель.
# Разделить запятой S = «красный, зеленый, синий» х = S.split(',') печать (х) # Выводит ['red', 'green', 'blue']
# Разбивает на новую строку S = 'Первая строка\nВторая строка' х = S.split('\n') печать (х) # Выводит ['Первая строка', 'Вторая строка']
Разделитель может содержать несколько символов.
S = 'начало есть конец есть начало' х = S.split('есть') печать (х) # Печатает ['начало', 'конец', 'начало']
Ограничьте количество разделений с помощью Maxsplit
Когда вы укажете maxsplit, будет сделано только заданное количество разделений. Результирующий список будет иметь указанное количество элементов плюс один .
S = «Мир прекрасен» х = S.split(Нет,1) печать (х) # Отпечатки ['The', 'World is Beautiful'] S = «Мир прекрасен» х = S. split(Нет,2) печать (х) # Отпечатки ['The', 'World', 'is Beautiful']
Если maxsplit не указан или равен -1, split()
выполнит все возможные разделения (количество разделений не ограничено).
S = «Мир прекрасен» х = S.split(Нет,-1) печать (х) # Выводит ['The', 'World', 'is', 'Beautiful'] S = «Мир прекрасен» х = S.split() печать (х) # Выводит ['The', 'World', 'is', 'Beautiful']
Разделить по нескольким разделителям
Метод split()
не позволяет использовать несколько разделителей. Вместо этого вы можете использовать метод re.split() (на основе регулярного выражения).
# Разделить запятой ( , ) точкой с запятой ( ; ) и двоеточием ( : ) S = 'красный, зеленый, синий: желтый' импортировать повторно х = re.split('[;:]',S) печать (х) # Выводит ['red', 'green', 'blue', 'yellow']
split() vs rsplit()
Если указано maxsplit, split()
считает деления с левого конца, тогда как rsplit( ) считает их справа. В остальном они оба ведут себя одинаково.
# разделить() S = «Мир прекрасен» х = S.split(Нет,1) печать (х) # Отпечатки ['The', 'World is Beautiful'] # рсплит() S = «Мир прекрасен» х = S.rsplit (Нет, 1) печать (х) # Отпечатки ['Мир есть', 'Прекрасен']
Распаковка, индексация и нарезка
Поскольку метод split()
возвращает список подстрок, вы можете выполнять любые операции, поддерживаемые списком. Например, множественное присваивание (распаковка), индексирование, нарезка и т. д.
# множественное присваивание S = «красный, зеленый, синий» х, у, г = S.split(',') печать (х) # Печатает красный печать (у) # Печатает зеленый печать (г) # Печатает синим # индексация S = «красный, зеленый, синий, желтый» х = S.split(',')[2] печать (х) # Печатает синим # нарезка S = «красный, зеленый, синий, желтый» х = S.split(',')[1:3] печать (х) # Выводит ['зеленый', 'синий']
Разделение строк в Python (разделитель, разрыв строки, регулярное выражение и т.
д.)В этой статье объясняется, как разделить строки по разделителям, разрывам строк, регулярным выражениям и количеству символов в Python.
Содержимое- Разделить по разделителю:
split()
- Укажите разделитель:
сен
- Укажите максимальное количество разделений:
maxsplit
- Укажите разделитель:
- Разделить справа разделителем:
rsplit()
- Разделить по разрыву строки:
splitlines()
- Разделить по регулярному выражению:
re.split()
- Разделить по нескольким разным разделителям
- Объединить список строк
- Разделить на основе количества символов: срез
Дополнительные сведения о объединении и извлечении строк см. в следующих статьях.
- Объединение строк в Python (оператор +, объединение и т. д.)
- Извлечь подстроку из строки в Python (позиция, регулярное выражение)
Разделить по разделителю:
split()
Используйте метод split()
для разделения по разделителю.
- str.split() — Документация по Python 3.11.3
Если аргумент опущен, он разбивается по пробелам (пробелы, символы новой строки \n
, табуляции \t
и т. д.) и последовательно обрабатываются пробелы.
Возвращается список слов.
s_blank = 'один два три\nчетыре\пять' печать (s_blank) # один два три # четыре пять печать (s_blank.split()) # ['один два три четыре пять'] печать (тип (s_blank.split ())) # <класс 'список'>
источник: str_split_rsplit.py
Используйте join()
, описанную ниже, для объединения списка в строку.
Укажите разделитель:
сен
Укажите разделитель для первого параметра, сен
.
s_comma = 'один, два, три, четыре, пять' печать (s_comma.split (',')) # ['один два три четыре пять'] печать (s_comma.split («три»)) # ['один,два,', ',четыре,пять']
источник: str_split_rsplit.py
Чтобы указать несколько разделителей, используйте регулярные выражения, как описано ниже.
Укажите максимальное количество разделений:
maxsplit
Укажите максимальное количество разделений для второго параметра, maxsplit
.
Если задано maxsplit
, выполняется не более maxsplit
расщеплений (таким образом, возвращаемый список будет содержать не более maxsplit + 1
элементов).
s_comma = 'один, два, три, четыре, пять' печать (s_comma.split (',', 2)) # ['один два три четыре пять']
источник: str_split_rsplit.py
Например, maxsplit
полезно для удаления первой строки из строки.
Если указать sep='\n'
и maxsplit=1
, можно получить список строк, разделенных первым символом новой строки \n
. Второй элемент [1]
этого списка представляет собой строку, исключающую первую строку. Поскольку это последний элемент, его также можно указать как [-1]
.
s_lines = 'один\nдва\nтри\nчетыре' печать (s_lines) # один # два # три # четыре печать (s_lines. split ('\ n', 1)) # ['один', 'два\nтри\nчетыре'] печать (s_lines.split ('\ n', 1) [0]) # один печать (s_lines.split ('\ n', 1) [1]) # два # три # четыре печать(s_lines.split('\n', 1)[-1]) # два # три # четыре
источник: str_split_rsplit.py
Аналогично, чтобы удалить первые две строки:
print(s_lines.split('\n', 2)[-1]) # три # четыре
источник: str_split_rsplit.py
Разделение справа по разделителю:
rsplit()
rsplit()
разделение строки справа.
- str.rsplit() — Документация по Python 3.11.3
Результат отличается от split()
только при наличии параметра maxsplit
.
Подобно split()
, если вы хотите удалить последнюю строку, используйте rsplit()
.
s_lines = 'один\nдва\nтри\nчетыре' печать (s_lines.rsplit ('\ n', 1)) # ['один\nдва\nтри', 'четыре'] печать (s_lines.rsplit ('\ n', 1) [0]) # один # два # три печать (s_lines. rsplit ('\ n', 1) [1]) # четыре
источник: str_split_rsplit.py
Чтобы удалить последние две строки:
print(s_lines.rsplit('\n', 2)[0]) # один # два
источник: str_split_rsplit.py
Разделить по разрыву строки:
splitlines()
Существует также splitlines()
для разделения по границам строк.
- str.splitlines() — Документация по Python 3.11.3
Как показано в предыдущих примерах, split()
и rsplit()
разбивают строку по пробелам, включая разрывы строк, по умолчанию. Вы также можете указать разрывы строк явно, используя параметр sep
.
Однако при использовании splitlines()
часто более подходит.
Например, разделенная строка, содержащая \n
(LF, используется в ОС Unix, включая Mac) и \r\n
(CR + LF, используется в ОС Windows).
s_lines_multi = '1 один\n2 два\r\n3 три\n' печать (s_lines_multi) # 1 один # 2 два № 3 три
источник: str_split_rsplit. py
По умолчанию, когда применяется split()
, он разбивается не только по разрывам строк, но и по пробелам.
печать (s_lines_multi.split()) # ['1', 'один', '2', 'два', '3', 'три']
источник: str_split_rsplit.py
Так как sep
позволяет указать только один символ новой строки, split()
может не работать должным образом, если строка содержит смешанные символы новой строки. Он также разделяется в конце символа новой строки.
печать(s_lines_multi.split('\n')) # ['1 один', '2 два\r', '3 три', '']
источник: str_split_rsplit.py
splitlines()
разбивается на разных символах новой строки, но не на других пробелах.
печать(s_lines_multi.splitlines()) # ['1 один', '2 два', '3 три']
источник: str_split_rsplit.py
Если для первого аргумента keepends
установлено значение True
, результат включает символ новой строки в конце строки.
печать (s_lines_multi.splitlines (истина)) # ['1 один\n', '2 два\r\n', '3 три\n']
источник: str_split_rsplit.py
Дополнительные сведения о других операциях с разрывами строк см. в следующей статье.
- Обработка разрывов строк (новых строк) в строках в Python
Разделить по регулярному выражению:
re.split()
split()
и rsplit()
разделить только тогда, когда sep
полностью совпадают.
Если вы хотите разделить строку, которая соответствует регулярному выражению (regex), а не идеальному совпадению, используйте split()
модуля re.
- Регулярные выражения с модулем re в Python
- re.split() — Операции с регулярными выражениями — Документация по Python 3.11.3
В re.split()
укажите шаблон регулярного выражения в первом параметре и целевую строку символов во втором параметре.
Вот пример разбиения строки на последовательные числа:
import re s_nums = 'один1два22три333четыре' print(re. split('\d+', s_nums)) # ['один два три четыре']
источник: str_re_split.py
Максимальное количество разделений можно указать в третьем параметре, maxsplit
.
print(re.split('\d+', s_nums, 2)) # ['один', 'два', 'три333четыре']
источник: str_re_split.py
Разделить по нескольким разным разделителям
Эти два примера полезно запомнить, даже если вы не знакомы с регулярными выражениями:
Заключите строку с []
для соответствия любому символу . Вы можете разделить строку на несколько разных символов.
s_marks = 'один-два+три#четыре' print(re.split('[-+#]', s_marks)) # ['один два три четыре']
источник: str_re_split.py
Если шаблоны разделены цифрой |
, он соответствует любому шаблону. Конечно, можно использовать специальные символы регулярного выражения для каждого шаблона, но это нормально, даже если обычная строка указана как есть. Вы можете разделить на несколько разных строк.
s_strs = 'oneXXXtwoYYYthreeZZZfour' print(re.split('XXX|YYY|ZZZ', s_strs)) # ['один два три четыре']
источник: str_re_split.py
Объединение списка строк
В предыдущих примерах можно разделить строку и получить список.
Если вы хотите объединить список строк в одну строку, используйте строковый метод join()
.
Вызовите join()
из 'separator'
и передайте список строк для объединения.
л = ['один', 'два', 'три'] печать (','. Присоединиться (л)) # один два три печать('\n'.присоединиться(л)) # один # два # три печать(''.присоединиться(л)) # один два три
источник: str_split_rsplit.py
Дополнительные сведения о конкатенации строк см. в следующей статье.
- Объединение строк в Python (оператор +, объединение и т. д.)
Разбить на основе количества символов: slice
Используйте slice для разделения строк на основе количества символов.
- Как разрезать список, строку, кортеж в Python
с = 'abcdefghij' печать (с [: 5]) # абвде печать (с [5:]) # фгидж
источник: str_split_rsplit.py
Результаты разделения могут быть получены в виде кортежа или присвоены отдельным переменным.
- Множественное назначение в Python: присвоить несколько значений или одно и то же значение нескольким переменным
s_tuple = с[:5], с[5:] печать (s_tuple) # ('abcde', 'fghij') печать (тип (s_tuple)) # <класс 'кортеж'> s_first, s_last = s[:5], s[5:] печать (s_first) # абвде печать (s_last) # фгидж
источник: str_split_rsplit.py
Разделить на три:
s_first, s_second, s_last = s[:3], s[3:6], s[6:] печать (s_first) # азбука печать (с_секунда) # защита печать (s_last) # гий
источник: str_split_rsplit.py
Количество символов можно получить с помощью встроенной функции len()
. Вы также можете разделить строку пополам, используя это.