В Python есть несколько способов разделить строку по нескольким разделителям.
Способ 1: использование метода re.split()
Чтобы разделить строку с одним разделителем в Python, вы можете использовать метод re.split(). Функция позволяет разделить строку на основе шаблона, который может включать несколько разделителей.
|
1 2 3 4 5 6 7 |
import re input_string = "This is an;example,string:with.multiple|delimiters" delimiters = ";|,|:|\\.|\\|" split_string = re.split(delimiters, input_string) print(split_string) |
Выход
|
1 |
['This is an', 'example', 'string', 'with', 'multiple', 'delimiters'] |
В этом примере входная строка разбивается на список подстрок на основе указанных разделителей.
Способ 2: с помощью functools.reduce() и понимания списка
Вы можете использовать split() в сочетании с циклом for, методом functools.reduce() и пониманием списка.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from functools import reduce def multi_split(input_string, delimiters): if not delimiters: return [input_string] def _split_by_delimiter(string, delimiter): return [substring for segment in string for substring in segment.split(delimiter)] return reduce(_split_by_delimiter, delimiters, [input_string]) input_string = "This is an;example,string:with.multiple|delimiters" delimiters = [';', ',', ':', '.', '|'] split_string = multi_split(input_string, delimiters) print(split_string) |
Выход
|
1 |
['This is an', 'example', 'string', 'with', 'multiple', 'delimiters'] |
Способ 3: использование метода str.split() с пользовательской функцией
Метод str.split() — это встроенный метод Python для разбиения строки на список подстрок на основе указанного разделителя. Если разделитель не указан, метод разбивает строку на основе пробельных символов(пробелов, табуляции и новой строки).
Однако метод str.split() напрямую не поддерживает несколько разделителей. Для этого вы можете создать пользовательскую функцию, которая использует метод str.split() в цикле по разделителям.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def multi_split(input_string, delimiters): segments = [input_string] for delimiter in delimiters: new_segments = [] for segment in segments: new_segments.extend(segment.split(delimiter)) segments = new_segments return segments input_string = "This is an;example,string:with.multiple|delimiters" delimiters = [';', ',', ':', '.', '|'] split_string = multi_split(input_string, delimiters) print(split_string) |
Выход
|
1 |
['This is an', 'example', 'string', 'with', 'multiple', 'delimiters'] |
В этом примере функция multi_split() принимает входную строку и список разделителей. Затем она итеративно разбивает входную строку, используя каждый разделитель, и накапливает результат в списке сегментов.
