Разбиение строк через split() в Python
35.9KМетод Python split() разбивает строку на части, используя специальный разделитель, и возвращает эти части в виде списка.
Синтаксис метода split():
str.split([разделитель [, maxsplit]])
_____________________________________________________________________________________________________
В методе split() используется не более двух параметров:
- разделитель (необязательный параметр) – строка разбивается на части с помощью указанного символа. Если разделитель не задан, то любая пробельная строка (пробел, новая строка и т.д.) считается разделителем;
- maxsplit (необязательный параметр) определяет максимальное количество частей.
Если в maxsplit имеет значение -1 то, что количество разбиений строки неограниченно.
______________________________________________________________________________________________________
Метод Python split string разбивает строку с помощью указанного спецсимвола и возвращает список подстрок.
______________________________________________________________________________________________________
Пример 1: Как split() работает в Python?
text= 'Love thy neighbor' # разделяем строку print(text.split()) grocery = 'Milk, Chicken, Bread' # разделяем запятой print(grocery.split(', ')) # разделяем двоеточием print(grocery.split(':'))
В результате выполнения данной программы с Python split методом вы увидите:
['Love', 'thy', 'neighbor'] ['Milk', 'Chicken', 'Bread'] ['Milk, Chicken, Bread']
______________________________________________________________________________________________________
Пример 2: Выполнение split() при заданном maxsplit:
grocery = 'Milk, Chicken, Bread, Butter' # maxsplit: 2 print(grocery.split(', ', 2)) # maxsplit: 1 print(grocery.split(', ', 1)) # maxsplit: 5 print(grocery.split(', ', 5)) # maxsplit: 0 print(grocery.split(', ', 0))
На выходе получаем результат выполнения метода split Python 3:
['Milk', 'Chicken', 'Bread, Butter'] ['Milk', 'Chicken, Bread, Butter'] ['Milk', 'Chicken', 'Bread', 'Butter'] ['Milk, Chicken, Bread, Butter']
При заданном параметре maxsplit максимальное количество элементов в списке равно maxsplit+1.
Данная публикация представляет собой перевод статьи «Python String split()» , подготовленной дружной командой проекта Интернет-технологии.ру
www.internet-technologies.ru
Разделить строку на список подстрок в python
Если нужно распарсить строку по какому-то символу, то в простом случае можно воспользоваться функцией split(separator=’ ‘):
a = 'python,django,templates' b = a.split(',') # b = ['python', 'django', 'templates']
Но если у нас задача посложнее, например:
a = 'python, django, template tags' b = a.split(',') # b = ['python', ' django', ' template tags']
то появится проблема лишних пробелов.
Итак, рассмотрим следующую задачу: есть форма с одним полем categories, данные которого можно записывать как через запятую, так и каждую с новой строки. Нужно сформировать список введённых данных. Например, данные поля имеют вид:
python, django cms, template tags templates
Видим, что первая строчка состоит из трех элементов, затем лишние абзацы и, наконец, ещё одна категория. С помощью следующего кода можно распарсить данные:
data = form.cleaned_data.get('categories') categories = [] rows = data.splitlines() # разбиваем на строки for row in rows: if row: # избавляемся от пустых строк [categories.append(' '.join(item.split())) for item in row.split(',') if item]
Результат выполнения кода:
categories = ['python', 'django cms', 'template tags', 'templates']
Немного прокомментирую код:
- Для разбиения строк используем splitlines(), который — похож на split(), но использует в качестве разделителя символы перевода каретки (\n и \r).
- Условием if row отсекаем пустые строки.
- Последней строкой кода мы используем генератор списка (без присваивания к переменной — оно нам не надо), чтобы компактнее записать код:
- row.split(‘,’) разбивает строку, используя запятую в качестве разделителя.
- ‘ ‘.join(item.split()) удаляет лишние пробелы между словами
Данный код не претендует на идеальность, но он достаточно читабельный — может, кому и пригодится!
Оцените статью
4.5 из 5 (всего 4 оценки)Спасибо за ваш отзыв!
После нажатия кнопки «Отправить» ваше сообщение будет доставлено мне на почту.
Права на использование материала, расположенного на этой странице https://vivazzi.pro/it/split-python/:
Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow"
в теге <a>
. Использование:
Автор статьи: Мальцев Артём
Ссылка на статью: <a href="https://vivazzi.pro/it/split-python/">https://vivazzi.pro/it/split-python/</a>
Подробнее: Правила использования сайта
Похожие статьи:
python — Как разбить строку на отдельные символы?
Stack Overflow на русском- 0
- +0
- Справка Подробные ответы на любые возможные вопросы
- Мета Обсудить принципы работы и политику сайта
- О нас Узнать больше о компании Stack Overflow
- Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
- Войти Регистрация
-
текущее сообщество
- Stack Overflow на русском справка чат
ru.stackoverflow.com
Как использовать 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
bunkerbook.ru
python — Как разделить строку на список слов разделённых пробелами?
Stack Overflow на русском- 0
- +0
- Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
- Справка Подробные ответы на любые возможные вопросы
- Мета Обсудить принципы работы и политику сайта
- О нас Узнать больше о компании Stack Overflow
- Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
- Войти Регистрация
-
текущее сообщество
- Stack Overflow на русском справка чат
- Stack Overflow на русском Meta
ru.stackoverflow.com
🔵 Разделить строку на слова и вывести их на печать по одному
Разделить строку на слова и вывести их на печать по одному
1.18K просмотра
Как сделать программу, используя функцию. Вводишь строку из несколько слов с пробелами. Находишь все слова и выводишь все слова отдельными строчками. Что я делаю не так?
str1 = str(input()) i = 0 k = 0 list = [] def space(str1): return(str1) while k <= len(str1): if str1(i) != " ": list.append(str(i)) return(list) i += 1 k += 1 mini_list = space(str1) print(mini_list)
6 Answers
Python Опубликовано 22.07.2019
Вот так можно:
single_line = raw_input() # разбить по пробелам, склеить обратно по LFам words_in_lines = '\n'.join(single_line.split()) # если между словами ровно по одному пробелу words_in_lines = single_line.replace(' ', '\n') # если там серии пробелов words_in_lines = re.sub(r'\s+', '\n', single_line) print words_in_lines
Также можно обратиться к регуляркам:
text = input() # "1 2 4 555" import re for x in re.split(r'\s+', text): print(x)
Консоль:
1 2 4 555
Это можно сделать значительно проще, пользуясь методами работы со строками:
new_list = my_str.split(' ')
А ваша не работает из-за return
перед циклом, интерпретатор прекращает выполнять функцию, возвращает ответ и не входит в цикл, return
надо переместить в конц функции.
Как сказал Igor Sergeevich можно воспользоватся стандартным методом для работы со строками. Но так как я вижу что вы пытаетесь сделать это в ручную, предложу такой вариант:
In [15]: def foo(string): ...: Flag = False ...: for i in string: ...: if i != ' ': ...: if Flag: ...: print() ...: print(i, end='') ...: Flag = False ...: else: ...: Flag = True
Использование:
In [18]: foo('string for example')
Результат:
string for example
Находишь все слова
Зря вы перебираете строку посимвольно в поисках пробелов.
- Во-первых, бывают и другие пробельные символы, например, неразрывный пробел или табуляция. Они тоже разделяют строку на слова.
- Во-вторых, для деления строки на слова в Python 3 есть метод
str.split()
. Он разбивает строку по заданному разделителю, а если не указывать разделитель (т.е. по умолчанию) — по пробельным символам (конкретно: space, tab, newline, return, formfeed). Возвращает список строк, на которые поделил исходную.
Вот так:
words = input().split()
Заметьте, что str(input())
не нужно, input()
и так возвращает строку.
Чтобы вывести каждое слово, достаточно перебрать список и каждое напечатать.
for word in words: print(word)
Оба действия можно объединить для лаконичности:
for word in input().split(): print(word)
Можно так:
list(map(print, input().split(' ')))
Напишите свой ответ на данный вопрос.
python-scripts.com
Основы Python — кратко. Строки. / Habr
Поскольку число положительных отзывов превысило число отрицательных, продолжу выкладывание уроков. Те кто уже знаком с основами — можете или просто пропустить урок, или попробовать сделать задание 3 самым коротким способом 🙂Для начала маленькое замечание.
Начиная с Python 2.3, всем, кто использует не-ASCII кодировку нужно добавлять указание о кодировке в самом начале программы. Для русского языка это будет в основном:
# -*- coding: cp1251 -*-
или использовать для хранения исходных текстов файлы utf-8 (что предпочтительней).
Изучив управление числами, пришла пора осваивать строки. Пайтон обладает весьма богатым набором возможностей в этой области.
Строки
Строки могут быть заключены в одинарные или двойные кавычки, строки могут использовать esc-последовательности в стиле С, многострочные константы задаются в тройных кавычках.
>>> "habrahabr" 'habrahabr' >>> 'foo bar boz' 'foo bar boz' >>> "won't" "won't" >>> 'don"t' 'don"t' >>> "couldn\"t" 'couldn"t' >>> """multi line ... very long ... string constant""" 'multi line\nvery long\nstring constant' >>> 'this takes \ ... two lines' 'this takes two lines'
Строки можно склеивать оператором + и «размножать» оператором *
>>> "Hello "+"word" 'Hello word' >>> "Hello "*3 'Hello Hello Hello '
По сути же своей строка представляет собой последовательность символов с произвольным доступом. Для получения части символов строки можно использовать т.н. оператор «среза». Обратите внимание, что нумерация начитается с нуля (и достаточно хаотична на первый взгляд).
>>> str = "Hello, cruel world!" # получить 4 символ строки >>> str[3] 'l' # все символы с 8 по 14 >>> str[7:14] 'cruel w' # каждый второй символ со 2 по 13 >>> str[1:12:2] 'el,cul' # некоторые значения можно опускать # каждый второй символ строки. >>> str[::2] 'Hlo re ol!'
Если опустить первый из трех параметров, он считается равным нулю, если опустить второй – срез будет продолжен до конца строки.
# первые 2 символа строки >>> str[:2] 'He' # вся строка кроме 2 первых символов >>> str[2:] 'llo, cruel world!'
Срезы с неправильными границами обрабатываются следующим образом:
— если верхняя граница среза больше длины строки, то она уменьшается до длины строки
— если нижняя граница больше верхней, то возвращается пустая строка
Также срезы могут принимать отрицательные значения.
# последний символ >>> str[-1] '!' # второй символ с конца >>> str[-2] 'd' # два последних символа >>> str[-2:] 'd!' # все символы кроме последних двух >>> str[:-2] 'Hello, cruel worl'
Лучший способ запомнить, как определяются индексы в срезе — считать их указывающими между символами, с номером 0 на левой границе первого символа. А правая граница последнего символа имеет индекс равный длине строки.
Для положительных символов длина строки равна разности между числами на границе.
Для определения длины строки используется функция len().
Unicode
В последних версиях Пайтон очень хорошо поддерживается работа с Unicode-строками.
Для задания unicode-строки в виде константы используется префикс u.
>>> uni = u"Тест" >>> uni u'\u0422\u0435\u0441\u0442'
Кроме того, Пайтон позволяет создать строку в Unicode с помощью одноименной функции.
>>> uni = unicode("Тест", "UTF-8") >>> uni u'\u0422\u0435\u0441\u0442'
Эта функция функция может работать с Latin-1, ASCII, UTF-8, UTF-16, с русскими кодировками ISO-8859-5, KOI8-R, CP1251, CP866 и Mac-cyrillic, и многими другими.
Для обратного преобразования служит метод encode, который преобразует unicode-строку в строку с заданной кодировкой.
>>> uni.encode("UTF-8") '\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82' >>> uni.encode("CP1251") '\xd2\xe5\xf1\xf2'
Для преобразования строки в список по определенному разделителю, используется метод split.
Этот метод в качестве параметра запрашивает разделитель, а возвращает список отдельных «слов» по которому можно «пройти» в цикле for.
>>> str = "Mary has a little lamb" >>> str.split(" ") ['Mary', 'has', 'a', 'little', 'lamb'] >>> for word in str.split(" "): ... print word ... Mary has a little lamb
Домашнее задание.
1. Написать программу, выводящую заданную пользователем строку как минимум в 3 разных кодировках. При этом писать вызов метода encode() в программе можно только 1 раз.
2. Написать программу поиска самого длинного слова в строке, разделенной пробелами.
3. (Повышенная сложность) Написать программу декодирования телефонного номера для АОН.
По запросу АОНа АТС посылает телефонный номер, используя следующие правила:
— Если цифра повторяется менее 2 раз, то это помеха и она должна быть отброшена
— Каждая значащая цифра повторяется минимум 2 раза
— Если в номере идут несколько цифр подряд, то для обозначения «такая же цифра как предыдущая» используется идущий 2 или более подряд раз знак #
Например, входящая строка 4434###552222311333661 соответствует номеру 4452136
Кстати, регулярные выражения использовать в этих заданиях — нельзя 🙂
habr.com