Перейти к содержимому

Как разделить строку по нескольким разделителям python

  • автор:

Как разделить строки с помощью String.Split в C#

Метод String.Split создает массив подстрок, разбивая входную строку по одному или нескольким разделителям. Этот метод зачастую является самым простым способом разделить строку по границам слов. Он также используется для разбиения строк по другим конкретным символам или строкам.

Примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на площадке Try.NET. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.

Следующий код разбивает обычную фразу на массив строк для каждого слова.

string phrase = "The quick brown fox jumps over the lazy dog."; string[] words = phrase.Split(' '); foreach (var word in words) < System.Console.WriteLine($">"); > 

Каждый экземпляр знака разделения создает значение в возвращаемом массиве. Последовательные знаки разделения создают пустую строку в виде значения в возвращаемом массиве. В следующем примере показано создание пустой строки с использованием символа пробела в качестве разделителя.

string phrase = "The quick brown fox jumps over the lazy dog."; string[] words = phrase.Split(' '); foreach (var word in words) < System.Console.WriteLine($">"); > 

Такое поведение упрощает работу с такими форматами, как файл данных с разделителями-запятыми (CSV), которые представляют табличные данные. Идущие подряд запятые представляют пустой столбец.

Чтобы исключить из возвращаемого массива все пустые строки, можно передать необязательный параметр StringSplitOptions.RemoveEmptyEntries. Для более сложной обработки возвращенной коллекции можно использовать LINQ, чтобы управлять результирующей последовательностью.

String.Split может использовать несколько знаков разделения. В следующем примере используются пробелы, запятые, точки, двоеточия и вкладки в качестве разделительных символов, которые передаются Split в массив. Цикл в конце кода отображает каждое из слов в возвращенном массиве.

char[] delimiterChars = < ' ', ',', '.', ':', '\t' >; string text = "one\ttwo three:four,five six seven"; System.Console.WriteLine($"Original text: ''"); string[] words = text.Split(delimiterChars); System.Console.WriteLine($" words in text:"); foreach (var word in words) < System.Console.WriteLine($">"); > 

Последовательные экземпляры любого разделителя создают пустую строку в выходном массиве:

char[] delimiterChars = < ' ', ',', '.', ':', '\t' >; string text = "one\ttwo :,five six seven"; System.Console.WriteLine($"Original text: ''"); string[] words = text.Split(delimiterChars); System.Console.WriteLine($" words in text:"); foreach (var word in words) < System.Console.WriteLine($">"); > 

Метод String.Split может принимать массив строк (в этом случае в качестве разделителей при анализе целевой строки используются последовательности символов, а не отдельные символы).

string[] separatingStrings = < "; string text = "one'"); string[] words = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries); System.Console.WriteLine($" substrings in text:"); foreach (var word in words)

См. также

  • Извлечение элементов из строки
  • Руководство по программированию на C#
  • Строки
  • Регулярные выражения .NET

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

The .NET documentation is open source. Provide feedback here.

Обратная связь

Отправить и просмотреть отзыв по

Разделить строку с разделителями в Python

В этом посте будет обсуждаться, как разделить строку с разделителями в Python.

1. Использование re.split() функция

Простое решение для разделения строки по вхождениям шаблона — использование встроенной функции re.split() . Шаблон может состоять из одного или нескольких разделителей:

⮚ Разделить по одному разделителю

Чтобы разделить строку с одним разделителем, вы можете просто передать этот разделитель в re.split() функция.

Как разбить строку сразу по нескольким разделителям?

Не получается таким образом, выводит кучу непонятных ошибок. Нужно разбить строку по знакам: ? или & Для примера подается какая то URL строка:

https://yandex.ru/images/search?text=котики&source=images_drawing 

Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
задан 31 дек 2020 в 13:06
823 1 1 золотой знак 9 9 серебряных знаков 29 29 бронзовых знаков

Попробуйте использовать паттерн [&?] . Но лучше использовать встроенные библиотеки для разбора url-строк. urllib.parse, например.

31 дек 2020 в 13:10

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

In [84]: re.split(r"[?&]", url) Out[84]: ['https://yandex.ru/images/search', 'text=котики', 'source=images_drawing'] 

но лучше все-таки использовать urllib.parse:

In [85]: from urllib.parse import urlparse, parse_qs, parse_qsl In [86]: parse_qs(urlparse(url).query) Out[86]: In [89]: parse_qsl(urlparse(url).query) Out[89]: [('text', 'котики'), ('source', 'images_drawing')] 

Отслеживать
ответ дан 31 дек 2020 в 13:13
MaxU - stand with Ukraine MaxU - stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
а как потом обратиться к элементу ключа text во втором варианте?
31 дек 2020 в 13:16

@марат, а в чем трудности: q = parse_qs(urlparse(url).query); q["text"] ? Можете уточнить в вопросе что именно и в каком виде вы хотите получить в итоге?

31 дек 2020 в 13:20

задача такова , что вводится строка и ключ и по ключу нужно получить элемент , вы помогли очень хорошо, в переменную h ввожу ключ и вывожу ответ, немного преобразовав ваш выше комментарий по обращению к элементу через ключ print(*q[h]) и в итоге получаю просто котики

Функция re.split#

Функция split работает аналогично методу split в строках, но в функции re.split можно использовать регулярные выражения, а значит, разделять строку на части по более сложным условиям.

Например, строку ospf_route надо разбить на элементы по пробелам (как в методе str.split):

In [1]: ospf_route = 'O 10.0.24.0/24 [110/41] via 10.0.13.3, 3d18h, FastEthernet0/0' In [2]: re.split(r' +', ospf_route) Out[2]: ['O', '10.0.24.0/24', '[110/41]', 'via', '10.0.13.3,', '3d18h,', 'FastEthernet0/0'] 

Аналогичным образом можно избавиться и от запятых:

In [3]: re.split(r'[ ,]+', ospf_route) Out[3]: ['O', '10.0.24.0/24', '[110/41]', 'via', '10.0.13.3', '3d18h', 'FastEthernet0/0'] 

И, если нужно, от квадратных скобок:

In [4]: re.split(r'[ ,\[\]]+', ospf_route) Out[4]: ['O', '10.0.24.0/24', '110/41', 'via', '10.0.13.3', '3d18h', 'FastEthernet0/0'] 

У функции split есть особенность работы с группами (выражения в круглых скобках). Если указать то же выражение с помощью круглых скобок, в итоговый список попадут и разделители.

Например, в выражении как разделитель добавлено слово via:

In [5]: re.split(r'(via|[ ,\[\]])+', ospf_route) Out[5]: ['O', ' ', '10.0.24.0/24', '[', '110/41', ' ', '10.0.13.3', ' ', '3d18h', ' ', 'FastEthernet0/0'] 

Для отключения такого поведения надо сделать группу noncapture. То есть, отключить запоминание элементов группы:

In [6]: re.split(r'(?:via|[ ,\[\]])+', ospf_route) Out[6]: ['O', '10.0.24.0/24', '110/41', '10.0.13.3', '3d18h', 'FastEthernet0/0'] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *