Разбить текст на слова, избавившись от всех символов пунктуации и символов перевода строк
Задаем в регулярке шаблон поиска и ищем через findall:
import re text = """Tratata - blabla, tutu Tratata - blabla, tutu""" # Или короче: text = re.findall('[a-zа-яё]+', text, re.I) text = re.findall('[a-zа-яё]+', text, flags=re.IGNORECASE) print(text) # ['Tratata', 'blabla', 'tutu', 'Tratata', 'blabla', 'tutu']
Как подсказал Eugene Dennis, можно сделать обратное поиску — разделение по символам через split:
text = re.split('[^a-zа-яё]+', text, flags=re.IGNORECASE) print(text) # ['Tratata', 'blabla', 'tutu', 'Tratata', 'blabla', 'tutu']
При желании, можно указать параметр maxsplit , чтобы контролировать количества частей, по умолчанию он равен 0 — не имеет ограничений.
Можно сократить шаблон a-zа-яё и флаг re.IGNORECASE , используя шаблон \w , но это еще зацепит символы _ (нижнее подчеркивание) и 0-9 :
text = re.findall('\w+', text) print(text) # ['Tratata', 'blabla', 'tutu', 'Tratata', 'blabla', 'tutu']
И, соответственно, для split ( \W — это конструкция обратная \w ):
text = re.split('\W+', text) print(text) # ['Tratata', 'blabla', 'tutu', 'Tratata', 'blabla', 'tutu']
Разделить в Python 3 слово на символы [дубликат]
Есть строка, к примеру, «май» надо сделать так, чтобы получился список примерно такого вида: [‘м’, ‘а’, ‘й’] . split тут не сработает (по крайней мере, у меня не вышло), так как нет символа, через который можно разделить слово на буквы.
Отслеживать
9,456 4 4 золотых знака 42 42 серебряных знака 57 57 бронзовых знаков
задан 14 окт 2015 в 16:37
61 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
А в чём задача? Может быть для её решения и в список преобразовывать не надо)
15 окт 2015 в 22:04
как раз, надо. Пишу программу для расшифровки шифра цезаря. Там введенные слова нужно в лист запихнуть, как мне кажется 🙂
16 окт 2015 в 20:18
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Строка (например, «май» ) — это неизменяемая последовательность Юникодных символов (Unicode code points) в Питоне 3. Поэтому достаточно просто передать строку в list() , чтобы получить список символов (изменяемая последовательность).
Некоторые буквы могут состоять из нескольких символов, например, ё буква может быть представлена как U+0435 U+0308 последовательносить символов в NFD форме (Unicode normalization forms):
>>> print(u'\u0435\u0308') ё
Если хочется найти именно буквы, а не символы, то можно использовать \X регулярное выражение для букв (eXtended grapheme clusters):
>>> list(u'\u0435\u0308\u0436') ['е', '̈', 'ж'] >>> import regex # $ pip install regex >>> regex.findall(r'\X', u'\u0435\u0308\u0436', regex.U) ['ё', 'ж']
В данном случае строка содержит три символа, но только две буквы.
В общем случае, не все видимые символы могут быть представлены в виде единственной Unicode codepoint, то есть NFD не является единственной причиной, что некоторые символы на экране могут быть представлены в виде нескольких Unicode codepoints (см. примеры в ссылке выше).
Руководство по использованию метода split в Python
Строки — отличный инструмент в руках Python-разработчиков. В Python строка —
это последовательность символов в кавычках. Она может включать числа, буквы и
символы. С помощью Python строку можно разделить на список подстрок по
определенному разделителю. Это делается с помощью метода split .
В этом материале разберем особенности его использования.
Что делает split в Python?
Функция split сканирует всю строку и разделяет ее в случае нахождения разделителя.
В строке должен быть как минимум один разделитель. Им может выступать в том
числе и символ пробела. Пробел — разделитель по умолчанию.
Если параметр на задать, то разделение будет выполнено именно по символу
пробела.
Синтаксис функции следующий:
string.split(separator*, maxsplit*)
Параметр separator — необязательный, но он позволяет задать разделитель
вручную.
Параметр maxsplit определяет максимальное количество разделений. Значение по
умолчанию — -1, будут выполнены все разделения.
Как разделить строку в Python
Метод .split() разделяет основную строку по разделителю и возвращает список строк.
Как разбить слово на буквы в python: простые способы и советы
В Python есть несколько способов разбить слово на отдельные буквы. Давайте рассмотрим два наиболее распространенных подхода.
1. Использование цикла for
Первый способ — использовать цикл for для перебора каждой буквы в слове и добавления ее в список. Вот пример кода:
word = "Привет" letters = [] for letter in word: letters.append(letter) print(letters)
В этом примере мы создаем пустой список letters и затем перебираем каждую букву в слове «Привет». Каждая буква добавляется в список с помощью метода append() . В результате мы получим список, содержащий отдельные буквы слова.
2. Использование функции list()
Второй способ — преобразовать строку в список, используя функцию list() . Вот пример:
word = "Привет" letters = list(word) print(letters)
Здесь мы просто вызываем функцию list() и передаем ей строку word . Функция list() разобьет строку на отдельные символы и вернет список.
Выбор подхода
Оба подхода дают одинаковый результат. Вы можете выбрать тот, который вам больше нравится или который лучше соответствует контексту вашей программы.
Заключение
Теперь вы знаете два способа разбить слово на буквы в Python. Вы можете использовать цикл for или функцию list() в зависимости от ваших предпочтений. Удачи в программировании!