Разделение строки на списки в 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 может разбивать строки по любому разделителю, указанному в качестве параметра метода
. Таким разделителем может быть, например, запятая, точка или любой другой символ (или даже несколько символов).
Давайте рассмотрим пример, где в качестве разделителя выступает запятая и точка с запятой (это можно использовать для работы с 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)
Результат:
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'} ['key1', 'key2', 'key3'] ['value1', 'value2', 'value3']
Отделение указанного количества элементов
Метод split()
имеет еще один опциональный параметр — maxsplit
. С его помощью можно указать, какое максимальное число «разрезов» нужно сделать. По умолчанию
, это означает, что число разбиений не ограничено.
Если вам нужно отделить от строки несколько первых подстрок, это можно сделать, указав нужное значение 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']
python split
В python split — метод, позволяющий оперировать выводом, в частности — извлечь часть строки, отделенную каким-то образом от остального содержимого. Это аналог awk в bash. Разделителем может быть запятая, двоеточие, пробел и т.п.
Для примера рассмотрим строку с несколькими абстрактными значениями, разделенными запятыми.
> string_with_comas=»thing1, thing2, thing3″
> string_with_comas.split(«,»)
[‘thing1’, ‘ thing2’, ‘ thing3’]
После применения метода split данные представляют собой список (list).
>type(string_with_comas)
<class ‘str’>
> type(string_with_comas.split(«,»))
<class ‘list’>
Методу split передается разделитель — запятая,вертикальная черта, тире, двоеточие или что-то иное.
Если аргумент не указывать — разбиение произойдет по пробелам.
> string_with_comas.split()
[‘thing1,’, ‘thing2,’, ‘thing3’]
> long_string=»Filler text is text that shares some characteristics of a real written text, but is random or otherwise generated. It may be used to display a sample of fonts, generate text for testing, or to spoof an e-mail spam filter.»
> long_string.split()
[‘Filler’, ‘text’, ‘is’, ‘text’, ‘that’, ‘shares’, ‘some’, ‘characteristics’, ‘of’, ‘a’, ‘real’, ‘written’, ‘text,’, ‘but’, ‘is’, ‘random’, ‘or’, ‘otherwise’, ‘generated.’, ‘It’, ‘may’, ‘be’, ‘used’, ‘to’, ‘display’, ‘a’, ‘sample’, ‘of’, ‘fonts,’, ‘generate’, ‘text’, ‘for’, ‘testing,’, ‘or’, ‘to’, ‘spoof’, ‘an’, ‘e-mail’, ‘spam’, ‘filter.’]
Поскольку на выходе лист, с его элементами можно работать обращаясь к ним по индексу:
> long_string.split()[7]
‘characteristics’
Метод splitlines
С многострочным текстом нужно работать иначе
>> long_string=»’
… Filler text is text that shares some characteristics of a real
… written text, but is random or otherwise generated. It may be used to display a
… sample of fonts, generate text for testing, or to spoof an e-mail spam filter.»’
split нужного результат не даст и чтобы получить list с отдельными словами требуется выполнить два действия:
1)
Применить метод splitlines
> long_string.splitlines()
[», ‘Filler text is text that shares some characteristics of a real’, ‘written text, but is random or otherwise generated. It may be used to display a’, ‘sample of fonts, generate text for testing, or to spoof an e-mail spam filter.’]
На выходе будет list из содержимого строк
2)
Далее каждая строка разбирается в цикле for
> for line in long_string.splitlines():
… print (line.split())
[]
[‘Filler’, ‘text’, ‘is’, ‘text’, ‘that’, ‘shares’, ‘some’, ‘characteristics’, ‘of’, ‘a’, ‘real’]
[‘written’, ‘text,’, ‘but’, ‘is’, ‘random’, ‘or’, ‘otherwise’, ‘generated.’, ‘It’, ‘may’, ‘be’, ‘used’, ‘to’, ‘display’, ‘a’]
[‘sample’, ‘of’, ‘fonts,’, ‘generate’, ‘text’, ‘for’, ‘testing,’, ‘or’, ‘to’, ‘spoof’, ‘an’, ‘e-mail’, ‘spam’, ‘filter.’]
Про методы find и index в Python.
Как использовать Split в Python
Метод Split() в Python возвращает список слов в строке / строке, разделенных строкой разделителя.
Разбиение строки Split
Метод split() в Python без аргумента разбивается на пробелы.
Пример:
str = «This is a test» print(str.split())
str = «This is a test» print(str.split()) |
Вывод:
[‘This’, ‘is’, ‘a’, ‘test’]
[‘This’, ‘is’, ‘a’, ‘test’] |
Разделение на первое вхождение
В следующем примере он будет разделен только на 2 пробела.
Пример:
str = «This is a test» print(str.split(» «,2))
str = «This is a test» print(str.split(» «,2)) |
Вывод:
Разделение строк из текстового файла в Python
Следующая программа Python, читающая текстовый файл и разбивающая его на отдельные слова в Python.
Пример:
with open(«my_file.txt», «r») as my_file: for line in my_file: str = line.split() print(str)
with open(«my_file.txt», «r») as my_file: for line in my_file: str = line.split() print(str) |
Разбиение строки на новую строку (\ n)
str = «This \nis \na \ntest» print(str) print(«\nAfter Split\n») print(str.split())
str = «This \nis \na \ntest» print(str) print(«\nAfter Split\n») print(str.split()) |
Вывод:
This is a test After Split [‘This’, ‘is’, ‘a’, ‘test’]
This is a test After Split [‘This’, ‘is’, ‘a’, ‘test’] |
Разбиение строки по вкладке (\ t)
str = «This \tis \ta \ttest» print(str) print(«\nAfter Split\n») print(str.split())
str = «This \tis \ta \ttest» print(str) print(«\nAfter Split\n») print(str.split()) |
Вывод:
This is a test After Split [‘This’, ‘is’, ‘a’, ‘test’]
This is a test After Split [‘This’, ‘is’, ‘a’, ‘test’] |
Разбиение строки запятой (,)
str = «This,is,a,test» print(str.split(«,»))
str = «This,is,a,test» print(str.split(«,»)) |
Вывод:
[‘This’, ‘is’, ‘a’, ‘test’]
[‘This’, ‘is’, ‘a’, ‘test’] |
Разделить строку с несколькими разделителями
В этом случае Python использует регулярное выражение.
Пример:
import re str = «This,isa;test» print(re.split(«,;»,str))
import re str = «This,isa;test» print(re.split(«,;»,str)) |
Вывод:
[‘This’, ‘is’, ‘a’, ‘test’]
[‘This’, ‘is’, ‘a’, ‘test’] |
Разделить строку в список
Следующая программа Python разделяет строку на список.
Пример:
str = «This is a test» lst = str.split() for st in lst: print(st)
str = «This is a test» lst = str.split() for st in lst: print(st) |
Вывод:
Источник: net-informations.com
Split строка с несколькими разделителями в Python
Я нашел несколько ответов в интернете, но у меня нет опыта работы с регулярными выражениями, что, по-моему, и нужно здесь.
У меня есть строка, которая должна быть split либо’;’, либо ‘, ‘ То есть это должна быть либо точка с запятой, либо запятая, за которой следует пробел. Отдельные запятые без пробелов trailing следует оставить нетронутыми
Пример строки:
"b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3], mesitylene [000108-67-8]; polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]"
должно быть split в список, содержащий следующее:
('b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3]' , 'mesitylene [000108-67-8]', 'polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]')
python string split delimiter Поделиться Источник gt565k 14 февраля 2011 в 23:42 5 Ответов
637
К счастью, Python имеет этот встроенный 🙂
import re
re.split('; |, ',str)
Обновление:
После вашего комментария:
>>> a='Beautiful, is; better*than\nugly'
>>> import re
>>> re.split('; |, |\*|\n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
Поделиться Jonathan 14 февраля 2011 в 23:52
160
Сделать str.replace('; ', ', ')
, а затем str.split(', ')
Поделиться Joe 14 февраля 2011 в 23:47
86
Вот безопасный способ для любой итерации разделителей, используя регулярные выражения:
>>> import re
>>> delimiters = "a", "...", "(c)"
>>> example = "stackoverflow (c) is awesome... isn't it?"
>>> regexPattern = '|'.join(map(re.escape, delimiters))
>>> regexPattern
'a|\\.\\.\\.|\\(c\\)'
>>> re.split(regexPattern, example)
['st', 'ckoverflow ', ' is ', 'wesome', " isn't it?"]
re.escape позволяет автоматически построить шаблон и красиво экранировать разделители.
Вот это решение в качестве функции для вашего удовольствия от копирования-вставки:
def split(delimiters, string, maxsplit=0):
import re
regexPattern = '|'.join(map(re.escape, delimiters))
return re.split(regexPattern, string, maxsplit)
Если вы собираетесь split часто использовать одни и те же разделители, скомпилируйте свое регулярное выражение заранее, как описано выше, и используйте RegexObject.split
.
Поделиться Kos 01 ноября 2012 в 20:15
48
В ответ на вышеприведенный ответ Джонатана это, по-видимому, работает только для определенных разделителей. Например:
>>> a='Beautiful, is; better*than\nugly'
>>> import re
>>> re.split('; |, |\*|\n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
>>> b='1999-05-03 10:37:00'
>>> re.split('- :', b)
['1999-05-03 10:37:00']
Помещая разделители в квадратные скобки, он, по-видимому, работает более эффективно.
>>> re.split('[- :]', b)
['1999', '05', '03', '10', '37', '00']
Поделиться Paul 09 января 2013 в 10:22
26
Вот так выглядит regex:
import re
# "semicolon or (a comma followed by a space)"
pattern = re.compile(r";|, ")
# "(semicolon or a comma) followed by a space"
pattern = re.compile(r"[;,] ")
print pattern.split(text)
Поделиться Jochen Ritzel 14 февраля 2011 в 23:52
Похожие вопросы:
Как я могу split строку с несколькими разделителями в javascript?
Как я могу split строку с несколькими разделителями в JavaScript? Я пытаюсь использовать split как для запятых, так и для пробелов, но функция AFAIK, JS split поддерживает только один разделитель.
Split строка с несколькими разделителями, хранящаяся в словаре
Я должен split строку, используя несколько разделителей, которые хранятся в словаре python. Например, это мой словарь с разделителями: import operator ops = { +: operator.add, -: operator.sub, *:…
Split строка с несколькими (более конкретными) разделителями в PHP
Я знаю, что этот вопрос был задан миллион раз, хотя я действительно не могу найти ответ на свой вопрос. Я прочитал ответ на этот вопрос, как split строка с несколькими разделителями в PHP? Что…
как я могу split строку несколькими разделителями и сохранить разделители?
у меня есть для примера эта строка abc({ . теперь я хочу split его разделителем ( , и я знаю, что могу использовать String.split для этого. но есть ли способ, которым я могу split if этим символом,…
Как сделать split строку в Python с несколькими разделителями?
Например, я мог бы захотеть превратить split Hello>>>World!!!!2]]splitting в [Hello, World,2,splitting] . Это не обязательно должно быть ^that^, но я хочу split строку с несколькими…
Python split с несколькими разделителями не работает
У меня есть строка: feature.append(freq_and_feature(текст, частота)) Я хочу, чтобы список, содержащий каждого слова строки, как [характеристика, добавление частоты, и, функция, текст, частота], где…
Split строка в нескольких строках с несколькими разделителями в строке
Я с нетерпением жду лучшей реализации string tokenizer. Я видел много реализаций, но некоторые из них не работают с несколькими разделителями подряд. Я могу сделать это сам, но я не знаю некоторых…
Split с несколькими разделителями
У меня есть текстовый файл, который мне нужно split строка за строкой с двумя разделителями. ‘Testing’ # Libname ‘Testing2’ #Libname2 Но, то, что я хочу, это: Testing Libname Testing2 Libname2 На…
Vim split строка с несколькими разделителями
есть ли способ split строку vimscript с несколькими разделителями? Я знаю, например, что это будет split строка по каждому ‘/’ : split(‘C:/test/blub\bla\bla\bla.txt’, ‘/’) . Но есть ли способ split…
Python: split строка с разделителями из списка
Я хотел бы split строку с разделителями, которые находятся в списке. Строка имеет следующий шаблон: Firstname, Lastname Email Список разделителей имеет следующее: [ ‘ ,’,»] , взятый из шаблона. Я…
Как использовать Split в Python
Последнее обновление:
Определение
Метод split () разбивает строку на список, используя указанный пользователем разделитель. Если разделитель не определен, используется пробел («»).
Зачем нужна функция Split ()?
В какой-то момент вам может потребоваться разбить большую струну на более мелкие куски или струны. Это противоположность конкатенации, при которой строки объединяются в одну.
Для этого используется функция разделения.Он разбивает или разбивает строку и добавляет данные в массив строк с использованием определенного разделителя.
Если при вызове функции разделитель не определен, по умолчанию будет использоваться пробел. Проще говоря, разделитель — это определенный символ, который будет помещен между каждой переменной.
Примеры работы функции разделения
Давайте рассмотрим несколько примеров.
x = ‘ синий, красный , зеленый ’
х. раздельный ( ",")
[«синий», «красный», «зеленый»]
>>>
>>> a, b , c = x.split («,»)
>>> а
«синий»
>>> b
«красный»
>>> c
«зеленый»
Как видно из этого кода, функция разбивает нашу исходную строку, которая включает три цвета, а затем сохраняет каждую переменную в отдельной строке.Остается три строки «а», «б» и «с». Затем, когда вы попросите интерпретатор выдать переменные, хранящиеся в этих строках, вы получите соответствующий цвет.
Довольно аккуратно, не так ли? Это также чрезвычайно полезно, когда вы много работаете со строками и переменными.
Давайте посмотрим на другой пример.
>>> words = «Это случайный текст, который мы разделим на части»
>>> words2 = words.split («»)
>>> слова2
[«This», «is», «random», «text», «we’re», «going», «to», «split», «отдельный»]
Здесь мы разбили большую строку и сохранили переменные в виде списка под строкой «words2».
,Как использовать Split в Python
Метод split () в Python возвращает список слов в строке / строке, разделенных разделителем строка . Этот метод вернет одну или несколько новых строк. Все подстроки возвращаются в типе данных списка.
Синтаксис
string.split (разделитель, макс.)Параметр | Описание |
---|---|
сепаратор | — это разделитель.Строка разделяется по указанному разделителю. Если не указан, то любой пробел является разделителем. |
макссплит | Это число, которое говорит нам разделить строку на максимальное заданное количество раз. Если он не предусмотрен, значит, нет предела. |
возврат | split () разбивает строку по разделителю и возвращает список строк. |
Если при вызове функции разделитель не определен, по умолчанию будет использоваться пробелов. .Проще говоря, разделитель — это определенный символ , который будет помещен между каждой переменной. Поведение разбиения на пустую строку зависит от значения sep. Если sep не указан или указан как None, результатом будет пустой список. Если sep указан как любая строка, результатом будет список, содержащий один элемент, который является пустой строкой .
Разделение строки на пробел
Метод split () в Python без аргумента разбивается на пробелы.
пример
str = «Это тест» печать (str.split ())выход
[‘Это проверка’]Расщепление при первом появлении
В следующем примере он будет разделен только по первым двум пробелам.
пример
str = «Это тест» print (str.split («», 2))выход
[‘Это проверка’]Разделение строк из текстового файла в Python
Следующая программа Python читает текстовый файл и разбивает его на отдельные слова в python
пример
с open («my_file.txt «,» r «) как my_file: для строки в my_file: str = line.split () печать (ул)Разделение строки новой строкой (\ n)
str = «Это \ nis \ na \ ntest» печать (ул) print («\ nПосле разделения \ n») печать (str.split ())выход
это является тест После Сплита [‘Это проверка’]Разделение строки табуляцией (\ t)
str = «Это \ tis \ ta \ ttest» печать (ул) print («\ nПосле разделения \ n») печать (ул.Трещина())выход
Это проверка После Сплита [‘Это проверка’]Разделение строки запятой (,)
str = «Это, это, тест» печать (str.split ( «»))выход
[‘Это проверка’]Разделенная строка с несколькими разделителями
В этом случае Python использует регулярное выражение.
пример
импорт ре str = «Это, isa; test» печать (повторно.сплит ( «;», ул))выход
[‘Это проверка’]Разделить строку на список
Следующая программа Python разбивает строку на список.
пример
str = «Это тест» lst = str.split () для st in lst: печать (ул)выход
это является тестпараметр maxsplit
Разделить строку на список максимум из 2 элементов
числа = «один два три четыре пять шесть» результат = числа.split («», 2) печать (результат)выход
[‘один два три четыре пять шесть’]В приведенной выше программе maxsplit равен 2, первые две строки разделены, а остальные находятся в одной строке.
Разделить строку на массив символов
characters = «abcdef» результат = список (символы) печать (результат)выход
[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ’f’]Python split () с использованием подстроки
Выделяет строку после определенной подстроки.
В приведенном выше примере вы можете увидеть, как функция split () возвращает следующую часть строки с использованием определенной подстроки.
Здесь вы можете увидеть, как функция split () возвращает предыдущую часть строки с использованием определенной подстроки.
Ищете работу на Python?
Скорее всего, вам нужно будет доказать, что вы знаете, как работать с Python. Эти вопросы для собеседования по Python были разработаны специально, чтобы познакомить вас с характером вопросов, с которыми вы можете столкнуться во время собеседования по предмету Программирование на Python .Вот основные примеры вопросов для собеседования на Python, и ответы на них даны чуть ниже. Эти примеры вопросов составлены нашей командой экспертов, которая готовится к Python training , чтобы дать вам представление о типах вопросов, которые могут быть заданы на собеседовании.
Перейти к … Вопросы для собеседования по Python
,
Разделение строк в Python (разделитель, разрыв строки, регулярное выражение и т. Д.)
Вот как разделить строки по разделителям, разрывам строк, регулярным выражениям и количеству символов в Python.
- Разделить по разделителю:
разделить ()
- Укажите разделитель:
сен
- Укажите максимальное количество сплит:
maxsplit
- Укажите разделитель:
- Разделить справа по разделителю:
rsplit ()
- Разделить по разрыву строки:
разделенных строк ()
- Разделить по регулярному выражению:
re.сплит ()
- Разделить на несколько разных разделителей
- Конкатенационный список строк
- Разделение по количеству символов: срез
Подробнее о конкатенации строк см. Следующий пост.
Разделение по разделителю: разделение ()
Используйте метод split ()
для разделения по одному разделителю.
Если аргумент не указан, он будет разделен пробелом. Пробелы включают пробелы, символы новой строки \ n
и табуляции \ t
, а последовательные пробелы обрабатываются вместе.
Возвращается список слов.
s_blank = 'раз, два, три \ nfour \ tfive' печать (s_blank) # раз два три # четыре пять печать (s_blank.split ()) # ['раз, два, три, четыре, пять'] печать (тип (s_blank.split ())) # <список классов>
Используйте join ()
, описанный ниже, для объединения списка в строку.
Укажите разделитель: сен
Задайте разделитель для первого параметра sep
.
s_comma = 'один, два, три, четыре, пять' печать (s_comma.Трещина(',')) # ['раз, два, три, четыре, пять'] печать (s_comma.split ( 'три')) # ['один, два,', ', четыре, пять']
Если вы хотите указать несколько разделителей, используйте регулярные выражения, как описано ниже.
Укажите максимальное количество сплитов: maxsplit
Укажите максимальное количество разделений для второго параметра maxsplit
.
Если задано maxsplit
, выполняется не более maxsplit
разбиений.
печать (s_comma.split (',', 2)) # ['раз, два, три, четыре, пять']
Например, это полезно, когда вы хотите удалить первую строку из строки.
Если sep = '\ n'
, maxsplit = 1
, вы можете получить список строк, разделенных первым символом новой строки \ n
. Второй элемент [1]
этого списка представляет собой строку, исключая первую строку. Поскольку это последний элемент, его можно указать как [-1]
.
s_lines = 'один \ nдва \ nтри \ nfour' печать (s_lines) # один # два # три # четыре печать (s_lines.сплит ('\ n', 1)) # ['один', 'два \ nтри \ nчетыре'] print (s_lines.split ('\ n', 1) [0]) # один print (s_lines.split ('\ n', 1) [1]) # два # три # четыре print (s_lines.split ('\ n', 1) [- 1]) # два # три # четыре
Аналогичным образом удаляем первые две строки:
print (s_lines.split ('\ n', 2) [- 1]) # три # четыре
Разделить справа по разделителю: rsplit ()
rsplit ()
разделяется справа от строки.
Результат отличается от split ()
только тогда, когда задан второй параметр maxsplit
.
Так же, как split ()
, если вы хотите удалить последнюю строку, используйте rsplit ()
.
печать (s_lines.rsplit ('\ n', 1)) # ['один \ nдва \ nтри', 'четыре'] print (s_lines.rsplit ('\ n', 1) [0]) # один # два # три print (s_lines.rsplit ('\ n', 1) [1]) # четыре
Чтобы удалить последние две строки:
print (s_lines.rsplit ('\ n', 2) [0]) # один # два
Разделить по разрыву строки: разделенных строк ()
Также есть splitlines ()
для разделения по границам строк.
Как и в предыдущих примерах, 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 три
Когда split ()
применяется по умолчанию, он разбивается не только по разрывам строк, но и по пробелам.
печать (s_lines_multi.split ()) # ['1', 'один', '2', 'два', '3', 'три']
Поскольку в sep
можно указать только один символ новой строки, он не может быть разделен, если есть смешанные символы новой строки. Он также разделяется в конце символа новой строки.
печать (s_lines_multi.split ('\ n')) # ['1 один', '2 два \ r', '3 три', '']
splitlines ()
разделяется на различные символы новой строки, но не на другие пробелы.
печать (s_lines_multi.splitlines ()) # ['1 один', '2 два', '3 три']
Если для первого аргумента keepends
задано значение True
, результат будет содержать символ новой строки в конце строки.
печать (s_lines_multi.splitlines (True)) # ['1 один \ n', '2 два \ r \ n', '3 три \ n']
Разделить по регулярному выражению: re.split ()
split ()
и rsplit ()
разделяются только тогда, когда sep
полностью совпадает.
Если вы хотите разделить строку, которая соответствует регулярному выражению, а не точному совпадению, используйте split ()
модуля re.
В re.split ()
укажите шаблон регулярного выражения в первом параметре и целевую строку символов во втором параметре.
Ниже приведен пример разбивки по порядковым номерам.
импорт ре s_nums = 'one1two22three333four' печать (re.split ('\ d +', s_nums)) # ['один два три четыре']
Максимальное количество разбиений можно указать в третьем параметре maxsplit
.
печать (re.split ('\ d +', s_nums, 2)) # ['one', 'two', 'three333four']
Разделить на несколько разных разделителей
Следующие два полезно запомнить, даже если вы не знакомы с регулярными выражениями.
Заключите строку с []
, чтобы соответствовать любому одиночному символу в ней. Его можно использовать для разделения на несколько разных символов.
s_marks = 'один-два + три # четыре' print (re.split ('[- + #]', s_marks)) # ['один два три четыре']
Если шаблоны разделены символом |
, соответствует любому шаблону. Конечно, можно использовать специальные символы регулярного выражения для каждого шаблона, но это нормально, даже если обычная строка указана как есть. Его можно использовать для разделения нескольких разных строк.
s_strs = 'oneXXXtwoYYYthreeZZZfour' print (re.split ('XXX | YYY | ZZZ', s_strs)) # ['один два три четыре']
Список конкатенации строк
В предыдущих примерах мы разделили строку и получили список.
Если вы хотите объединить список строк в одну строку, используйте строковый метод join ()
.
Вызвать метод join ()
из 'separator'
, передать в аргумент список строк, которые нужно объединить.
l = ["один", "два", "три"] печать ( ''. присоединиться (л)) # раз два три печать ( '\ n'.join (л)) # один # два # три печать ( ''. присоединиться (л)) # раз два три
Подробнее о конкатенации строк см. Следующий пост.
Разделение по количеству символов: срез
Используйте срез для разделения строк по количеству символов.
s = 'abcdefghij' печать (ы [: 5]) # abcde Печать (с [5]:) # fghij
Его можно получить как кортеж или присвоить переменной соответственно.
s_tuple = s [: 5], s [5:] печать (s_tuple) # ('abcde', 'fghij') печать (тип (s_tuple)) # <класс 'кортеж'> s_first, s_last = s [: 5], s [5:] печать (s_first) # abcde печать (s_last) # fghij
Разделить на три:
s_first, s_second, s_last = s [: 3], s [3: 6], s [6:] печать (s_first) # abc печать (s_second) # def печать (s_last) # ghij
Количество символов можно получить с помощью встроенной функции len ()
. Его также можно разделить на две части.
half = len (s) // 2 печать (половина) # 5 s_first, s_last = s [: половина], s [половина:] печать (s_first) # abcde печать (s_last) # fghij
Если вы хотите объединить строки, используйте оператор +
.
печать (s_first + s_last) # abcdefghij,
Python 3 split () — 2 ответа
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Загрузка…