Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/222: Рейтинг темы: голосов - 222, средняя оценка - 4.78
8 / 5 / 3
Регистрация: 06.02.2019
Сообщений: 29

Удалить из строки лишние пробелы

10.02.2019, 16:43. Показов 46399. Ответов 8

Студворк — интернет-сервис помощи студентам
В общем, задача поставлена так:
"Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он:
- стоит в начале строки;
- стоит в конце строки;
- следует за пробелом."
Решить пытаюсь так:
Python
1
2
3
4
5
6
7
8
9
10
11
s=input()
s1=list(s)
for i in range(len(s1)):
    if s1[i]==' ':
        if i==0:
            s1[i]=''
        if i==len(s1)-1:
            s1[i]=''
        if s1[i-1]==' ':
            s1[i]=''
print(''.join(s1))
Однако при вводе, например, 5 пробелов между словами, остаётся 2 пробела вместо одного, который я хотел бы оставить. Подскажите, пожалуйста, как исправить.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2019, 16:43
Ответы с готовыми решениями:

Удалить лишние пробелы из строки
Строковый тип данных. Задачи. Дан текст, слова в котором слова разделены одним или несколькими пробелами. Удалите лишние пробелы (...

Удалить лишние пробелы в строке
Напишите процедуру, удаляющую лишние пробелы в строке. Подскажите, пожалуйста,что не так в коде? def prob(s): s1=s.split('...

Удалить лишние пробелы между словами
Здравствуйте. Помогите, пожалуйста, с задачей: Написать программу на языке Python, реализующую решение задачи с использованием строкового...

8
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
10.02.2019, 17:02
Лучший ответ Сообщение было отмечено dramatist как решение

Решение

dramatist, А если так?)
Python
1
print(' '.join(input("Введите строку: ").split()))
0
8 / 5 / 3
Регистрация: 06.02.2019
Сообщений: 29
10.02.2019, 17:16  [ТС]
Да, это работает, спасибо, да и красивее, чем то, что сделал я. Но всё равно хотелось бы узнать, почему у меня он убирает не все ненужные пробелы между словами.
0
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
10.02.2019, 17:35
Цитата Сообщение от dramatist Посмотреть сообщение
Но всё равно хотелось бы узнать
Подсказка
Python
1
2
3
4
5
6
7
8
9
10
11
12
s=input()
s1=list(s)
s2 = s1[:]
for i in range(len(s1)):
    if s1[i]==' ':
        if i==0:
            s1[i]=''
        if i==len(s1)-1:
            s1[i]=''
        if s2[i-1]==' ':
            s1[i]=''
print(''.join(s1))
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
10.02.2019, 17:41
Цитата Сообщение от dramatist Посмотреть сообщение
почему у меня он убирает не все ненужные пробелы между словами.
Вы изначально неверно преобразовали строку в список (зачем разбивать по символам, если можно по пробелам сразу?). Да и если разбивать по пробелам и удалять проебели, а затем с помощью join склеивать, то можно без всех этих проверок обойтись.
Python
1
2
3
4
5
6
7
8
9
10
# s='    sfd              afs saf asf af     asf asf '
s = input()
s1=s.split(' ')
# print(s1)
k = len(s1)
for i in range(len(s1)):
    if s1[i]=='': continue
    else: s1.append(s1[i])
s1 = s1[k:]
print(' '.join(s1))
0
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
10.02.2019, 17:46
А еще есть магическая функция strip ну хотя б ее можно было использовать если действительно нужен такой подход.
Python
1
2
3
4
5
6
7
8
s=input().strip()
s1=list(s)
s2 = s1[:]
for i in range(len(s1)):
    if s1[i]==' ':
        if s2[i-1]==' ':
            s1[i]=''
print(''.join(s1))
0
8 / 5 / 3
Регистрация: 06.02.2019
Сообщений: 29
10.02.2019, 17:52  [ТС]
А еще есть магическая функция strip ну хотя б ее можно было использовать если действительно нужен такой подход.
svtslv, впервые сталкиваюсь с этой функцией, теперь буду знать, спасибо.
0
 Аватар для svtslv
308 / 160 / 66
Регистрация: 18.01.2019
Сообщений: 449
10.02.2019, 17:54
Цитата Сообщение от dramatist Посмотреть сообщение
впервые сталкиваюсь с этой функцией, теперь буду знать, спасибо.
А еще есть регулярки.. Как хорошо когда столько неизведанного. Каждый день приключения)
Python
1
2
import re
print(re.sub(' +', ' ', input('Введите строку: ').strip()))
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
10.02.2019, 17:59
Цитата Сообщение от dramatist Посмотреть сообщение
впервые сталкиваюсь с этой функцией, теперь буду знать, спасибо.
есть ещё rstip() и lstrip()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2019, 17:59
Помогаю со студенческими работами здесь

Удалить лишние пробелы(регулярные выражения)
Мне нужно удалить только лишние пробелы с помощью регулярных выражений. У меня получилось так: s = 'Термин " Регулярные...

Удалить все лишние пробелы между словами (между словами должен быть только один пробел)
В строке текста слова (последовательности букв) разделены пробелами, возможно не одним. Удалить все лишние пробелы между словами (между...

Удалить пробелы из строки
Надо ввести с клавиатуры символьную строку и составить новую строку,удалив из исходной все пробелы Пример: Введите строку: Вася...

Удалить из строки все знаки препинания. Пробелы оставить
Подскажите как это можно реализовать через, к примеру find

Удалить из строки все лишние пробелы, заменяя повторяющиеся пробелы на один пробел
Уровень Б. 1) С клавиатуры вводится символьная строка. Определите, какой символ встречается в ней чаще всего. 2) С клавиатуры вводится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru