Разделить в Python 3 слово на символы [дубликат]
Есть строка, к примеру, «май» надо сделать так, чтобы получился список примерно такого вида: [‘м’, ‘а’, ‘й’] . split тут не сработает (по крайней мере, у меня не вышло), так как нет символа, через который можно разделить слово на буквы.
Отслеживать
9,386 4 4 золотых знака 40 40 серебряных знаков 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 (см. примеры в ссылке выше).
Как разделить строку на символы python
Есть несколько способов как этого добиться, я расскажу про самый простой. Это использование встроенной функции list() , для того, чтобы преобразовать строку в список, состоящий из символов.
>>> sentence = 'I Love Hexlet!' >>> list(sentence) ['I', ' ', 'L', 'o', 'v', 'e', ' ', 'H', 'e', 'x', 'l', 'e', 't', '!']
Разбиение строки на список символов в Python
Часто в программировании возникает необходимость разбить строку на отдельные символы. Например, имеется строка «Привет, мир!». Целью может быть получение списка, содержащего все символы данной строки, то есть [‘П’, ‘р’, ‘и’, ‘в’, ‘е’, ‘т’, ‘,’, ‘ ‘, ‘м’, ‘и’, ‘р’, ‘!’].
Однако, при попытке использовать метод str.split() для достижения этой цели, результатом будет не список символов, а список слов. Этот метод разделяет строку на слова, используя пробелы в качестве разделителя.
text = "Привет, мир!" print(text.split()) # Результат: ['Привет,', 'мир!']
Это не то, что нужно в данном случае.
В Python есть несколько способов разбить строку на символы. Первый и самый простой способ — использовать функцию list() . Если передать строку в функцию list() , она вернет список, где каждый элемент — это отдельный символ строки.
text = "Привет, мир!" print(list(text)) # Результат: ['П', 'р', 'и', 'в', 'е', 'т', ',', ' ', 'м', 'и', 'р', '!']
Альтернативный способ — использовать list comprehension, или генератор списков. Это позволяет более тонко контролировать процесс разбиения строки на символы.
text = "Привет, мир!" print([char for char in text]) # Результат: ['П', 'р', 'и', 'в', 'е', 'т', ',', ' ', 'м', 'и', 'р', '!']
Оба этих способа прекрасно справляются с задачей разбиения строки на список символов, и выбор между ними зависит от конкретной ситуации и личных предпочтений.
Как разбить строку на символы и собрать из них слова в Python?
Всем привет, столкнулся с проблемой: есть строка, ее нужно разбить на символы и собрать из них слова (слова лежат в списке)
То есть к примеру строка helloworld программа ее разбивает на символы (к примеру метод list()) и потом как-то собирает слова (А слова находятся в списке: [«hello», «world»]). Конечно, это выглядит, что надо найти слова в строке и это можно сделать с помощью метода find(), но это не то, что мне нужно.
Примеры работы:
1) И так имеем строку helloworld и список из двух элементов: hello и world. Если программа находит оба слова то она выводит:
Найдено: hello world.
2) Имеем строку redcube и список из одного элемента: cube. Как видим в строке есть два слова: red и cube. Программа должна вывести следующее:
Найдено: cube.
Неизвестное: red
3) Имеем строку cocacolacool и список из трёх элементов: cocacola, is, cool. Как видим из всей строки совпадает только два слова: cocacola и cool. И также не найденое слово is.
Поэтому программа следовательно выведет следующее:
Найдено: cocacola cool.
Не найдено: is
4) имеем строку mynameissasha и список: hello, my, name, is. Как видим здесь имеется слова: my, name, is. Одно не найденое: hello и также неизвестное sasha. Следовательно программа выводит это:
Найдено: my name is
Не найдено: hello
Неизвестное: sasha
То есть вот примерный код:
my = "helloworld" words = ["hello", "world"] my_copy = list(my) #h, e, l, l, o, w, o, r, l, d def connect (list): #чтото connect(my_copy) #выводит — Найдено: hello world
- Вопрос задан более двух лет назад
- 2371 просмотр
4 комментария
Простой 4 комментария