Как убрать пробел после запятой в python
Перейти к содержимому

Как убрать пробел после запятой в python

  • автор:

Образуется пробел перед точкой в конце предложения

*-
Доброго времени суток. Решил самостоятельно изучать пайтон с абсолютного нуля в программировании. Мне сложно, но очень интересно. Вопрос собственно состоит в заголовке: Почему в результате образуется пробел в конце предложения перед точкой? Мне очень интересно понять эту причину и как ее устранить. Результат собственно таков: «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
Ответы с готовыми решениями:

Вывести строку, у которой в конце точка. Если точки нет, или перед точкой не буква, а пробел — то не выводить
Я написал код и он работает т.е выводит текст если в конце точка, если точки нет или пробел после.

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

Количество слов в тексте, если заданое слово в конце перед точкой.
Подскажите, вот так работает, но если слово в конце предложения заканчивающегося точкой. что.

Перенести часть строки в конец предложения перед точкой
Здравствуйте. Требуется в данном тексте: Если разложить поле на монохроматические.

Эксперт Python

4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
Используйте format.
Для 3.6+ есть запись:

f'тын-дын и '

Для более ранних

'тын-дын и '.format(b, c)

c варицаиями.
Регистрация: 21.06.2019
Сообщений: 16

dondublon
Благодарю за ответ. Но мне хотелось бы понять, почему так получается и принцип действия вашего ответа. Боюсь, что если не пойму этого, то двигаться дальше будет сложнее. Спасибо!

Эксперт Python

4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
specte, что получается, форматирование?
Регистрация: 21.06.2019
Сообщений: 16

dondublon,
Я даже не знаю, для чего нужно это форматирование, что оно даст? Почему появляется этот пробел если не производить форматирование? откуда он берется?

Эксперт Python

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- фраза, а и - результирующие

Эксперт Python

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.

Как убрать пробел после name?

@evgenik, при выполнении кода из вопроса пробел перед восклицательными знаком будет в любом случае добавляться, поэтому ваш совет не работает.

26 янв 2020 в 21:02

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Можно поступить так:

name = input() print('Hello, <>!'.format(name)) 
print('Hello, ' + name + '!') 
print(f'Hello, !') 
print('Hello, %s!' % name) 

Отслеживать
ответ дан 2 сен 2017 в 17:20
Pavel Durmanov Pavel Durmanov
5,728 3 3 золотых знака 21 21 серебряный знак 44 44 бронзовых знака
Ну тогда уж и про sep=» напиши 🙂
2 сен 2017 в 17:22
@diraria Тут в этом нет смысла. Больше толку от этого при распаковке.
2 сен 2017 в 17:23
Добавь тогда и форматирование через % , раз format упомянул 🙂
2 сен 2017 в 17:25

@diraria, например print(*’123′) и print(*’123′, sep=’, ‘) , тоже самое можно и для, к примеру, списков применить

2 сен 2017 в 17:29

стоит упомянуть какой из вариантов является более предпочтительным (это не очевидно). Если формат в виде константы известен как в этом случае, то f’Hello, !’ наиболее ясный (и вероятно самый эффективный) вариант. Поддерживается в Python 3.6+ Остальные варианты менее читаемы: ‘Hello, <>!’.format(name) . Если больше одного имени или не строковая переменная, то ‘Hello, ‘ + name + ‘!’ ещё хуже. Вариант с %s может иметь проблемы если name это кортеж (из-за бага к примеру иногда), и на Питоне 2 были ещё более тонкие отличия от ».format() кода (неявные преобразования unistr ).

TRIM (Transact-SQL)

Удаляет символ пробела char(32) или другие заданные символы в начале и конце строки.

При необходимости удаляет пробел char(32) или другие указанные символы из начальной, конечной или обеих сторон строки.

Начиная с SQL Server 2022 (16.x), при необходимости удаляет пробел char(32) или другие указанные символы из начала, конца или обеих сторон строки.

Синтаксис

Синтаксис SQL Server 2022 (16.x) и более ранних версий, База данных SQL Azure и Azure Synapse Analytics:

TRIM ( [ characters FROM ] string ) 

Синтаксис ДЛЯ SQL Server 2022 (16.x) и более поздних версий, Управляемый экземпляр SQL Azure и Microsoft Fabric:

Для использования LEADING TRAILING ключевое слово базы BOTH данных требуется 160 уровень совместимости базы данных.

TRIM ( [ LEADING | TRAILING | BOTH ] [characters FROM ] string ) 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

[ LEADING | TRAILING | BOTH ]

Область применения: SQL Server 2022 (16.x) и более поздних версий, Управляемый экземпляр SQL Azure и Microsoft Fabric:

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

  • LEADING удаляет символы, указанные в начале строки.
  • TRAILING удаляет символы, указанные в конце строки.
  • BOTH (поведение по умолчанию) удаляет символы, указанные в начале и конце строки.
characters

Литерал, переменная или вызов функции любого типа символов, отличного от большого объекта (nvarchar, varchar, nchar или char), которые содержат удаляемые символы. Типы nvarchar(max) и varchar(max) не допускаются.

string

Выражение любого типа символа (nvarchar, varchar, nchar или char), где должны быть удалены символы.

Типы возвращаемых данных

Возвращает символьное выражение с типом аргумента string, в котором символ пробела char(32) или другие заданные символы удалены с обеих сторон. Возвращает NULL , если входная строка равна NULL .

Замечания

По умолчанию функция TRIM удаляет символ пробела как в начале, так и в конце строки. Такая реакция на событие эквивалентна LTRIM(RTRIM(@string)) .

Чтобы включить необязательные LEADING TRAILING аргументы или BOTH позиционные аргументы в SQL Server 2022 (16.x), необходимо включить уровень 160 совместимости базы данных в базе данных, к которую вы подключаетесь при выполнении запросов.

  • При использовании необязательного позиционного аргумента LEADING поведение эквивалентно LTRIM(@string, characters) .
  • При использовании необязательного позиционного аргумента TRAILING поведение эквивалентно RTRIM(@string, characters) .

Примеры

А. Удаление пробела с обеих сторон строки

В приведенном ниже примере удаляются пробелы перед словом test и после него.

SELECT TRIM( ' test ') AS Result; 
test 

B. Удаление указанных символов с обеих сторон строки

В следующем примере представлен список возможных символов для удаления из строки.

SELECT TRIM( '. ' FROM ' # test .') AS Result; 
# test 

В этом примере удалены только конечная точка, а также пробелы перед символом # и после слова test . Другие символы были проигнорированы, так как их не было в строке.

C. Удаление указанных символов из начала строки

Для использования LEADING TRAILING ключевое слово базы BOTH данных требуется 160 уровень совместимости базы данных.

В следующем примере из начала строки удаляется начальный символ . перед словом test .

SELECT TRIM(LEADING '. ' FROM ' .# test .') AS Result; 
# test . 

D. Удаление указанных символов из конца строки

Для использования LEADING TRAILING ключевое слово базы BOTH данных требуется 160 уровень совместимости базы данных.

В следующем примере из конца строки удаляется конечный символ . после слова test .

SELECT TRIM(TRAILING '. ' FROM ' .# test .') AS Result; 
.# test 

Д. Удаление указанных символов из начала и конца строки

Для использования LEADING TRAILING ключевое слово базы BOTH данных требуется 160 уровень совместимости базы данных.

В следующем примере символы 123 удаляются из начала и конца строки 123abc123 .

SELECT TRIM(BOTH '123' FROM '123abc123') AS Result; 

Связанный контент

  • LEFT (Transact-SQL)
  • LTRIM (Transact-SQL)
  • RIGHT (Transact-SQL)
  • RTRIM (Transact-SQL)
  • STRING_SPLIT (Transact-SQL)
  • SUBSTRING (Transact-SQL)
  • Строковые функции (Transact-SQL)

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Как убрать пробелы в строке java

А если Вам необходимо убрать пробелы в начале и в конце, есть метод trim() который удаляет пробелы в начале и конце строки:

piblic static void main(String[] args)  String str = " Java- top "; System.out.println(str); System.out.println(str.trim()); > // Выход: // Java- top // Java- top // результат работы trim() 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *