Разбить строку на элементы python

Функции str.split и rsplit() в Python

Функция split() в Python используется для разделения строки на список строк на основе разделителя.

str.split(sep=None, maxsplit=-1)

В качестве разделителя используется аргумент sep. Если строка содержит последовательные разделители, возвращается пустая строка. Аргумент-разделитель также может состоять из нескольких символов.

Если разделитель не указан или None, то в качестве разделителя рассматриваются пробелы. В этом случае пустая строка не будет возвращена, если в начале или в конце есть пробелы. Кроме того, несколько пробелов будут рассматриваться, как один разделитель.

Если предоставляется maxsplit, выполняется не более maxsplit (таким образом, список будет содержать не более maxsplit + 1 элементов). Если maxsplit не указан или -1, то количество разделений не ограничено, и все возможные разделения возвращаются в списке.

Пример

Давайте посмотрим на простой пример, где строка будет разделена на список на основе указанного разделителя.

s = 'Python is Nice' # simple string split example str_list = s.split(sep=' ') print(str_list)

split() с maxsplit

s = 'Python is Nice' str_list = s.split(sep=' ', maxsplit=1) print(str_list)

Обратите внимание, что в возвращенном списке всего 2 элемента, строка была разделена только один раз.

sep не указан или None

s = ' Java Python iOS Android ' str_list = s.split() print(str_list)

Вывод: [‘Java’, ‘Python’, ‘iOS’, ‘Android’].

Начальные и конечные пробелы игнорируются в возвращаемом списке. Кроме того, последовательные пробелы также считаются одним разделителем.

Пример разделения многострочной строки

multiline_str = 'Hi There\nHow are you?\nI am fine' multiline_str_split_list = multiline_str.split(sep='\n') for s in multiline_str_split_list: print(s)
Hi There How are you? I am fine

Пример многосимвольного разделителя

s = 'Hi||Hello||Adios' str_list = s.split('||') print(str_list)

Пример функции str.split()

Мы также можем использовать функцию split() непосредственно из класса str.

print(str.split('ABACAD', sep='A')) print(str.split('ABACAD', sep='A', maxsplit=2))

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

Пример разделения строки CSV с вводом пользователем

Наконец, давайте посмотрим на реальный пример, где пользователь вводит данные CSV, а мы разбиваем их на список строк.

input_csv = input('Please enter CSV Data\n') input_csv_split_list = input_csv.split(sep=',') print('Input Data Length =', len(input_csv_split_list)) print('List of inputs =', input_csv_split_list)
Please enter CSV Data Java,Android,Python,iOS,jQuery Input Data Length = 5 List of inputs = ['Java', 'Android', 'Python', 'iOS', 'jQuery']

Функция split в python

Это все для примеров строковой функции split() в Python. Это очень полезная функция для разделения строки на список на основе некоторого разделителя.

Читайте также:  Php шаблоны html страниц

rsplit()

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

Давайте посмотрим на некоторые примеры функции rsplit().

# rsplit() example s = 'Python is Awesome' str_list = s.rsplit(sep=' ') print(str_list) str_list = s.rsplit(sep=' ', maxsplit=1) print(str_list) s = ' Java Python iOS Android ' str_list = s.rsplit() print(str_list) multiline_str = 'Hi There\nHow are you?\nI am fine' multiline_str_split_list = multiline_str.rsplit(sep='\n') for s in multiline_str_split_list: print(s) s = 'Hi||Hello||Adios' str_list = s.rsplit('||') print(str_list) # using split() with str class print(str.rsplit('ABACAD', sep='A')) print(str.rsplit('ABACAD', sep='A', maxsplit=2)) # csv and user input example input_csv = input('Please enter CSV Data\n') input_csv_split_list = input_csv.rsplit(sep=',') print('Input Data Length =', len(input_csv_split_list)) print('List of inputs =', input_csv_split_list)
['Python', 'is', 'Awesome'] ['Python is', 'Awesome'] ['Java', 'Python', 'iOS', 'Android'] Hi There How are you? I am fine ['Hi', 'Hello', 'Adios'] ['', 'B', 'C', 'D'] ['AB', 'C', 'D'] Please enter CSV Data x,y,z Input Data Length = 3 List of inputs = ['x', 'y', 'z']

Обратите внимание, что разница видна, если указан аргумент maxsplit. В противном случае вывод функций split() и rsplit() будет таким же.

Источник

Как разбить строку на символы в Python

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

Чтобы понять, о чем речь, возьмем конкретный пример. Допустим, у нас есть следующая строка: «Hdfs Tutorial». И мы хотим разбить ее на отдельные символы, используя язык Python. Давайте поищем способы, как лучше это сделать.

Вход: “Hdfs Tutorial” Результат: [‘H’, ‘d’, ‘f’, ‘s’, ‘ ‘, ‘T’, ‘u’, ‘t’, ‘o’, ‘r’, ‘i’, ‘a’, ‘l’]

1. Определяемая пользователем функция

Здесь я создам функцию под названием split() , которая принимает на вход один аргумент, например, нашу строку, и возвращает список всех символов, имеющихся в этой строке.

def split(s): return [char for char in s]

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

Теперь нам надо задать строку, которую мы хотим разбить на символы.

Результат

Теперь просто вызовем нашу функцию, передав в нее только что определенную нами строку.

Результат

[‘H’, ‘d’, ‘f’, ‘s’, ‘ ‘, ‘T’, ‘u’, ‘t’, ‘o’, ‘r’, ‘i’, ‘a’, ‘l’]

Вот и все! Это простейший способ разбить строку на символы в языке Python. Однако, как это обычно бывает в Python, есть еще несколько способов сделать то же самое. И сейчас мы по-быстрому разберем пару таких примеров.

Читайте также:  Java как отфильтровать list

2. Функция list()

Мы можем использовать встроенную функцию list() , которая сделает ровно то же самое.

Резльтат

[‘H’, ‘d’, ‘f’, ‘s’, ‘ ‘, ‘T’, ‘u’, ‘t’, ‘o’, ‘r’, ‘i’, ‘a’, ‘l’]

3. Разбиение строки на символы с использованием цикла for

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

s = 'Hdfs Tutorial' [c for c in s]

Результат

[‘H’, ‘d’, ‘f’, ‘s’, ‘ ‘, ‘T’, ‘u’, ‘t’, ‘o’, ‘r’, ‘i’, ‘a’, ‘l’]

Заключение

Это было очень краткое руководство о том, как разбить строку на символы в Python. Мы обсудили три простых способа, как это сделать. Лично я предпочитаю первый метод, так как он дает гораздо больше гибкости.

Источник

Python разделить строку на списки

В этой статье мы расскажем, как можно разбивать строки на списки. Вы узнаете, как при этом использовать разделители (в частности — как отделять часть строки только по первому разделителю и как быть с последовательно идущими разделителями) и регулярные выражения. Безусловно, эта информация будет особенно полезна начинающим питонистам, но, возможно, и более опытные найдут для себя кое-что интересное.

Простое разделение строки и получение списка ее составляющих

Если вы хотите разбить любую строку на подстроки и составить из них список, вы можете просто воспользоваться методом split(sep=None, maxsplit=-1) . Этот метод принимает два параметра (опционально). Остановимся пока на первом из них — разделителе ( sep ).

Разделитель можно задать явно в качестве параметра, но можно и не задавать: в этом случае в его роли выступает пробел.

Пример использования метода split() без указания разделителя:

print("Python2 Python3 Python Numpy".split()) print("Python2, Python3, Python, Numpy".split())
['Python2', 'Python3', 'Python', 'Numpy'] ['Python2,', 'Python3,', 'Python,', 'Numpy']

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

Python может разбивать строки по любому разделителю, указанному в качестве параметра метода split() . Таким разделителем может быть, например, запятая, точка или любой другой символ (или даже несколько символов).

Давайте рассмотрим пример, где в качестве разделителя выступает запятая и точка с запятой (это можно использовать для работы с CSV-файлами).

print("Python2, Python3, Python, Numpy".split(',')) print("Python2; Python3; Python; Numpy".split(';'))
['Python2', ' Python3', ' Python', ' Numpy'] ['Python2', ' Python3', ' Python', ' Numpy']

Как видите, в результирующих списках отсутствуют сами разделители.

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

import re sep = re.split(',', 'Python2, Python3, Python, Numpy') print(sep) sep = re.split('(,)', 'Python2, Python3, Python, Numpy') print(sep)
['Python2', ' Python3', ' Python', ' Numpy'] ['Python2', ',', ' Python3', ',', ' Python', ',', ' Numpy']

Если вы хотите, чтобы разделитель был частью каждой подстроки в списке, можно обойтись без регулярных выражений и использовать list comprehensions:

text = 'Python2, Python3, Python, Numpy' sep = ',' result = [x+sep for x in text.split(sep)] print(result)
['Python2,', ' Python3,', ' Python,', ' Numpy,']

Разделение многострочной строки (построчно)

Создать список из отдельных строчек многострочной строки можно при помощи того же метода split() , указав в качестве разделителя символ новой строки \n . Если текст содержит лишние пробелы, их можно удалить при помощи методов strip() или lstrip() :

str = """ Python is cool Python is easy Python is mighty """ list = [] for line in str.split("\n"): if not line.strip(): continue list.append(line.lstrip()) print(list)
['Python is cool', 'Python is easy', 'Python is mighty']

Разделение строки-словаря и преобразование ее в списки или словарь

Допустим, у нас есть строка, по сути являющаяся словарем и содержащая пары ключ-значение в виде key => value . Мы хотим получить эти пары в виде списков или настоящего словаря. Вот простой пример, как получить словарь и два списка:

dictionary = """\ key1 => value1 key2 => value2 key3 => value3 """ mydict = <> listKey = [] listValue = [] for line in dictionary.split("\n"): if not line.strip(): continue k, v = [word.strip() for word in line.split("=>")] mydict[k] = v listKey.append(k) listValue.append(v) print(mydict) print(listKey) print(listValue)
 ['key1', 'key2', 'key3'] ['value1', 'value2', 'value3']

Отделение указанного количества элементов

Метод split() имеет еще один опциональный параметр — maxsplit . С его помощью можно указать, какое максимальное число «разрезов» нужно сделать. По умолчанию maxsplit=-1 , это означает, что число разбиений не ограничено.

Читайте также:  Php email server settings

Если вам нужно отделить от строки несколько первых подстрок, это можно сделать, указав нужное значение maxsplit . В этом примере мы «отрежем» от строки первые три элемента, отделенные запятыми:

str = "Python2, Python3, Python, Numpy, Python2, Python3, Python, Numpy" data = str.split(", ",3) for temp in data: print(temp)
Python2 Python3 Python Numpy, Python2, Python3, Python, Numpy

Разделение строки при помощи последовательно идущих разделителей

Если вы для разделения строки используете метод split() и не указываете разделитель, то разделителем считается пробел. При этом последовательно идущие пробелы трактуются как один разделитель.

Но если вы указываете определенный разделитель, ситуация меняется. При работе метода будет считаться, что последовательно идущие разделители разделяют пустые строки. Например, ‘1,,2’.split(‘,’) вернет [‘1’, », ‘2’] .

Если вам нужно, чтобы последовательно идущие разделители все-таки трактовались как один разделитель, нужно воспользоваться регулярными выражениями. Разницу можно видеть в примере:

import re print('Hello1111World'.split('1')) print(re.split('1+', 'Hello1111World' ))
['Hello', '', '', '', 'World'] ['Hello', 'World']

Источник

Оцените статью