В строке заменить пробелы символом *
В строке заменить пробелы звездочкой. Если встречается подряд несколько пробелов, то их следует заменить одним знаком * , пробелы в начале и конце строки удалить.
Решение задачи на языке программирования Python
Решение данной задачи классическим способом, без использования продвинутых возможностей Python, может быть таким.
Сначала избавляемся от пробелов в начале и конце строки, если они имеются. Для этого перебираем строку посимвольно сначала или с конца. Как только встречается первый непробельный символ, берем срез от него до конца строки или до начала, в случае удаления пробелов с конца.
Далее снова посимвольно перебираем строку. Если очередной символ не является пробелом, то формировать новую строку добавлением к ней этого символа. В ветку elif попадают символы пробела, но здесь проверяется не был ли равен предыдущий символ пробелу. Если это не так (не был равен), то только тогда к новой строке добавляется «*». Лишние пробелы будут просто пропущены и не добавлены к новой строке.
s = input() i = 0 while s[i] == ' ': i += 1 s = s[i:] i = len(s) while s[i - 1] == ' ': i -= 1 s = s[:i] s_new = s[0] i = 1 while i len(s): if s[i] != ' ': s_new += s[i] elif s[i - 1] != ' ': s_new += '*' i += 1 print(s_new + '!')
Пример выполнения скрипта:
one two three four f*ve six seven one*two*three*four*f*ve*six*seven!
Однако в языке программирования Python данную задачу проще решить, преобразовав строку в список. С помощью метода split строка разделяется на слова по пробелам. При этом неважно сколько их. Далее остается только снова собрать слова в строку. Проще это сделать строковым методом join :
s = input() l = s.split() s1 = '*'.join(l) print(s1)
X Скрыть Наверх
Решение задач на Python
Работа со строками в Python: литералы
Строки в Python — упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
Экранированные последовательности — служебные символы
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
| Экранированная последовательность | Назначение |
|---|---|
| \n | Перевод строки |
| \a | Звонок |
| \b | Забой |
| \f | Перевод страницы |
| \r | Возврат каретки |
| \t | Горизонтальная табуляция |
| \v | Вертикальная табуляция |
| \N | Идентификатор ID базы данных Юникода |
| \uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
| \Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
| \xhh | 16-ричное значение символа |
| \ooo | 8-ричное значение символа |
| \0 | Символ Null (не является признаком конца строки) |
«Сырые» строки — подавляют экранирование
Если перед открывающей кавычкой стоит символ ‘r’ (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, "сырая" строка не может заканчиваться символом обратного слэша. Пути решения:
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как после каждого символа ставить точку?
Как после каждого символа ставить точку(любой знак)?! Или есть другой способ как из каждого символа получить такой результат?
print(data.split('.'))
Чтобы в конце получилось что-то вроде этого =>
['g', 'h', 'b', 'd', 't', 'n', '']
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 7 дек 2019 в 12:32
15 5 5 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Чтобы получить такой результат как в вопросе:
print(list(data))
Отслеживать
ответ дан 7 дек 2019 в 12:39
26.1k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Образуется пробел перед точкой в конце предложения
*-
Доброго времени суток. Решил самостоятельно изучать пайтон с абсолютного нуля в программировании. Мне сложно, но очень интересно. Вопрос собственно состоит в заголовке: Почему в результате образуется пробел в конце предложения перед точкой? Мне очень интересно понять эту причину и как ее устранить. Результат собственно таков: "The next number for the number 4 is 6 .
The next number for the number 4 is 3 ." Спасибо за внимание, хорошего настроения!
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вывести строку, у которой в конце точка. Если точки нет, или перед точкой не буква, а пробел - то не выводить
Я написал код и он работает т.е выводит текст если в конце точка, если точки нет или пробел после.
Удалить пробел перед точкой
Вводится текст - необходимо удалить все пробелы перед точкой(запятой). Понимаю, что нужно.

Количество слов в тексте, если заданое слово в конце перед точкой.
Подскажите, вот так работает, но если слово в конце предложения заканчивающегося точкой. что.
Перенести часть строки в конец предложения перед точкой
Здравствуйте. Требуется в данном тексте: Если разложить поле на монохроматические.
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
Используйте format.
Для 3.6+ есть запись:
f'тын-дын и '
Для более ранних
'тын-дын и '.format(b, c)
c варицаиями.
Регистрация: 21.06.2019
Сообщений: 16
dondublon
Благодарю за ответ. Но мне хотелось бы понять, почему так получается и принцип действия вашего ответа. Боюсь, что если не пойму этого, то двигаться дальше будет сложнее. Спасибо!
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
specte, что получается, форматирование?
Регистрация: 21.06.2019
Сообщений: 16
dondublon,
Я даже не знаю, для чего нужно это форматирование, что оно даст? Почему появляется этот пробел если не производить форматирование? откуда он берется?
![]()
1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057

Сообщение было отмечено specte как решение
Решение
specte, попытался объяснить
1 2 3 4 5 6
a = int(input()) b = a - 1 c = a + 1 print("The next number for the number", b, "is", c, '.') # print старый print("The next number for the number", b, "is" , b - 1 ,'.') print(f'тын-дын и ')# print новый, где f- фраза, а и - результирующие
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
specte, форматирование нужно для форматирования строк, извините за банальность.
Отформатированную строку вы можете присвоить переменной и передать куда-нибудь дальше, с ней работать. print выводит строки и забывает про них.
Форматирование гибче.
Пробел в print в качестве разделителя стоит по умолчанию, можно заменить.
print(. , sep='')
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949

Сообщение было отмечено specte как решение
Решение
specte, потому что функция принт по умолчанию выводит аргументы через пробел
>>> print('one','two',1,2,'.') one two 1 2 .
и если вы можете сложить строки
>>> print('one','two' +'.') one two
.
то с числами это не пройдет
1 2 3 4 5 6
>>> print('one','two',1,2 +'.') Traceback (most recent call last): File "", line 1, in module> print('one','two',1,2 +'.') TypeError: unsupported operand type(s) for +: 'int' and 'str' >>>
поэтому числа надо привести к строке
1 2 3
>>> print('one','two',1,str(2) +'.') one two 1 2. >>>
ну с форматированием проще
1 2 3
>>> print(f" ") one two 1 2. >>>
Регистрация: 21.06.2019
Сообщений: 16
dondublon, Dax,
Благодарю вас, господа за внимание, за терпение и за ваши попытки мне обьяснить. Я надеюсь, что понял все правильно.
Дело еще вот в чем. Тот интерактивный учебник, который я читаю, с подобными задачами, обьясняет на других примерах решения подобных задач, но как правило, такие обьяснения зачастую находятся не до этих задач, а после и в некоторых случаях вообще нет никаких обьяснений. Просто задача, а как мне ее решать - мои проблемы)
читал некоторые другие учебники и во всех, я все прекрасно понимаю и тут резко теряется смысл, появляется ощущение, будто из книги вырвали несколько страниц и текущая часть становится для меня непонятной изза оборваной нити, но читаю ведь все по порядку, стараюсь полученные знания практиковать. Я надеюсь, вы понимаете мой русский язык. Спасибо за внимание!
Добавлено через 3 минуты
Semen-Semenich, Вот прям разжевали и скормили.
Отличный ответ. Вам благодарность!
1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
specte, Если хотите учебник, в котором все максимально разжевано и объяснено, то изучайте
Лутц М. Изучаем Python (4-е издание, 2011). Этот учебник считается классикой питона. Но объем его значительный и требует серьезного изучения питона.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

После каждой точки в конце предложения должен стоять хотя бы один пробел
Ввести с клавиатуры текст, состоящий из предложений, разделяемых точками. В программе произвести.
После каждой точки в конце предложения должен стоять хотя бы один пробел
Дан массив символов, состоящий из предложений, разделенных точками. Напишите программу.

Перед каждой точкой в строке вставлять в скобках сумму ascii кодов всех букв предложения
Пример qwerty. Не работает программа, вот мой код: int ascii() < string st2=""; string.

Вместо новой строки образуется просто пробел
Работаю в Ubuntu. Есть цикл: <? for ($i=1; $i<10; $i++) < for($j=1; $j<10; $j++) echo.
