Поиск по сайту:

Специалист подобен флюсу: полнота его односторонняя (К. Прутков).

Как разбить строки в Python

4 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
25 февраля 2021
Python 3 - Обзор
В этой статье объясняется, как разделить строки в Python с помощью методов «split()» и «partition()». Эти методы особенно полезны, если вы хотите преобразовать предложение или группу слов в анализируемые и повторяемые типы Python. Все примеры кода в этой статье протестированы на Python версии 3.8.6.

 

Метод разделения

Метод split() может использоваться для разделения слов с использованием разделителя, указанного пользователем. Он возвращает список разделенных слов без разделителя. Если разделитель не указан пользователем, пробел (один или несколько) используется в качестве единственного разделителя.

Например, приведенный ниже код вернет в качестве вывода «[‘Linux’, ‘Ex’]»:

text = "Linux Ex"
text.split()

 

Приведенный ниже код вернет «[‘AndreyEx’, ‘ru’]» в качестве вывода, когда «.» используется как разделитель:

text = "AndreyEx.ru"
text.split(“.”)

 

Разделитель не обязательно должен состоять из одного символа. Метод split принимает два аргумента:

  • sep: разделитель, который будет использоваться для разделения
  • maxsplit: количество делений, которое нужно сделать

Оба эти аргумента необязательны. Как упоминалось выше, если аргумент «sep» не указан, пробел используется в качестве разделителя для разделения. Аргумент «maxsplit» имеет значение по умолчанию «-1» и по умолчанию разбивает все вхождения. Рассмотрим код ниже:

text = "AndreyEx.co.us"
text.split(“.”)

 

В качестве вывода он вернет «[‘AndreyEx’, ‘co’, ‘us’]». Если вы хотите остановить разделение при первом появлении разделителя, укажите «1» в качестве аргумента «maxsplit».

text = "AndreyEx.co.us"
text.split(“.”, 1)

 

Приведенный выше код вернет в качестве вывода «[‘AndreyEx’, ‘co.us’]». Просто укажите количество вхождений, когда вы хотите, чтобы процесс разделения остановился, в качестве второго аргумента.

Обратите внимание, что если есть последовательные разделители, для остальных разделителей после первого разделения будет возвращена пустая строка (когда аргумент «maxsplit» не используется):

text = "AndreyEx.ru"
text.split(".")

 

Приведенный выше код вернет «[‘AndreyEx’,», ‘ru’] »в качестве вывода. Если вы хотите удалить пустые строки из результирующего списка, вы можете использовать следующий оператор понимания списка:

text = "AndreyEx.ru"
result = text.split(".")
result = [item for item in result if item != ""]
print (result)

 

Вы получите «[‘AndreyEx’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Читать  Полное руководство, как стать веб-разработчиком в 2021 году

Обратите внимание, что метод split() перемещается слева направо для разделения строк на слова. Если вы хотите разделить строку справа налево, используйте вместо этого «rsplit()». Его синтаксис, использование и аргументы точно такие же, как у метода split().

Если при использовании методов «split()» или «rsplit()» в строке не обнаружен разделитель, исходная строка возвращается как единственный элемент списка.

 

Метод разделения

Метод partition() может использоваться для разделения строк, и он работает идентично методу split() с некоторыми отличиями. Наиболее заметное отличие состоит в том, что он сохраняет разделитель и включает его как элемент в результирующий кортеж, содержащий разделенные слова. Это особенно полезно, если вы хотите разделить строку на повторяющийся объект (в данном случае кортеж), не удаляя исходные символы. Рассмотрим код ниже:

text = "AndreyEx.ru"
result = text.partition(".")
print (result)

 

Приведенный выше пример кода вернет «(‘AndreyEx’, ‘.’, ‘ru’)» в качестве вывода. Если вы хотите, чтобы результат был типа списка, используйте вместо этого следующий пример кода:

text = "AndreyEx.ru"
result = list(text.partition("."))
print (result)

 

Вы должны получить «[‘AndreyEx’, ‘.’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Метод partition() принимает только один аргумент, называемый sep. Пользователи могут указать разделитель любой длины. В отличие от метода split(), этот аргумент является обязательным, поэтому вы не можете пропустить разделитель. Однако вы можете указать пробел в качестве разделителя.

Обратите внимание, что метод разделения останавливается при первом появлении разделителя. Поэтому, если ваша строка содержит несколько разделителей, метод partition() проигнорирует все другие вхождения. Вот пример, иллюстрирующий это:

text = "AndreyEx.co.us"
result = list(text.partition("."))
print (result)

 

Пример кода выдаст в качестве вывода «[‘AndreyEx’, ‘.’, ‘Co.us’]». Если вы хотите разделить все вхождения разделителя и включить разделитель в окончательный список, возможно, вам придется использовать шаблон «Регулярное выражение» или «Регулярное выражение». В примере, упомянутом выше, вы можете использовать шаблон RegEx следующим образом:

import re
text = "AndreyEx.co.us"
result = re.split("(\.)", text)
print (result)

 

Вы получите «[‘AndreyEx’, ‘.’, ‘Co’, ‘.’, ‘Us’]» в качестве вывода после выполнения приведенного выше примера кода. Точка была экранирована в операторе RegEx, упомянутом выше. Обратите внимание, что хотя приведенный выше пример работает с одним символом точки, он может не работать со сложными разделителями и сложными строками. Возможно, вам придется определить свой собственный шаблон RegEx в зависимости от вашего варианта использования. Пример приведен здесь, чтобы дать вам некоторое представление о процессе сохранения разделителя в окончательном списке с помощью операторов RegEx.

Читать  Python - Замена строки

Метод partition() иногда может оставлять пустые строки, особенно когда разделитель не найден в строке, которую нужно разделить. В таких случаях вы можете использовать операторы понимания списка для удаления пустых строк, как описано в разделе о методе «split()» выше.

text = "AndreyEx"
result = list(text.partition("."))
result = [item for item in result if item != ""]
print (result)

 

После выполнения приведенного выше кода вы должны получить в качестве вывода «[‘AndreyEx’]».

 

Вывод

Для простых и понятных разделений вы можете использовать методы «split()» и «partition()», чтобы получить повторяющиеся типы. Для сложных строк и разделителей вам нужно будет использовать операторы RegEx.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close