Как я могу вывести строку, исключая ВСЕ пробелы?

По сути, я пытаюсь сделать код на Python, где пользователь вводит предложение. Однако мне нужен мой код, чтобы удалить ВСЕ пробелы (например, вкладки, пробел, индекс и т. д.) и распечатать его.

Это то, что у меня есть до сих пор:

def output_without_whitespace(text):
  newText = text.split("")

print('String with no whitespaces: '.join(newText))

Я понимаю, что здесь я делаю много неправильно и многое упускаю, но я еще не смог полностью разобраться с разделением и объединением строк, поэтому было бы здорово, если бы кто-нибудь объяснил мне это. .

Это весь код, который у меня есть до сих пор:

text = input(str('Enter a sentence: '))
print(f'You entered: {text}')

def get_num_of_characters(text):
 result = 0
 for char in text:
     result += 1
 return result
print('Number of characters: ', get_num_of_characters(text))

def output_without_whitespace(text):
    newtext = "".join(text.split())

print(f'String without whitespaces: {newtext}')

Я РЕШИЛ СВОЮ ПРОБЛЕМУ! Я понимаю это в этой строке кода.

 print(f'String without whitespaces: {newtext}')

Это должно быть.

print('String without whitespaces: ', output_without_whitespace(text))

Я понимаю, что моя проблема с тем, почему предложение без пробелов не распечатывалось для меня, заключалась в том, что я не вызывал свою функцию!


person Vee    schedule 28.09.2018    source источник
comment
Не забудьте вызвать свою функцию.   -  person Austin    schedule 28.09.2018
comment
@Остин, какая функция?   -  person Vee    schedule 28.09.2018
comment
@eyllanesc Повторяющийся вопрос не ответил на мой вопрос. Не указано, как его распечатать. И я все еще получаю ошибки в своем коде.   -  person Vee    schedule 28.09.2018
comment
Эта функция: output_without_whitespace. Я не вижу, чтобы ты это называл. :)   -  person Austin    schedule 28.09.2018
comment
@ Остин, ах, извините, я только что отредактировал свой вопрос. Я только что опубликовал свой полный код.   -  person Vee    schedule 28.09.2018
comment
@Vee Вы можете показать код, который вы пробовали с решением другого вопроса, большинство ответов в этом посте похожи на дубликат.   -  person eyllanesc    schedule 28.09.2018


Ответы (4)


Идея у вас правильная, но вот как ее реализовать с помощью split и join:

def output_without_whitespace(text):
  return ''.join(text.split())

так что:

output_without_whitespace(' this\t  is a\n test..\n ')

вернется:

thisisatest..
person blhsing    schedule 28.09.2018
comment
Я ввожу этот код, однако я все еще получаю ту же строку С пробелами. - person Vee; 28.09.2018
comment
Вы скопировали и вставили этот код? При вводе кода должна быть опечатка. Пожалуйста, убедитесь, что вы не передаете никаких аргументов split(). - person blhsing; 28.09.2018
comment
Да, я сделал. Теперь ничего не распечатывается. - person Vee; 28.09.2018
comment
О, я понял свою проблему - person Vee; 28.09.2018
comment
Если вы хотите, чтобы он распечатался, вам нужно просто print с помощью print(output_without_whitespace(' this\t is a\n test..\n ')). - person blhsing; 28.09.2018
comment
Да, я только что понял свою проблему. Я отредактировал свой вопрос с правильным кодом, исправив свою проблему, ха-ха - person Vee; 28.09.2018

Тривиальное решение - просто использовать разделение и воссоединение (аналогично тому, что вы делаете):

def output_without_whitespace(text):
    return ''.join(text.split())

Сначала мы разбиваем исходную строку на список слов, затем объединяем их все вместе.

Итак, чтобы немного подумать об этом:

text.split()

даст нам список слов (разделенных любым пробелом). Так, например:

'hello world'.split() -> ['hello', 'world']

И наконец

''.join(<result of text.split()>)

объединяет все слова в данном списке в одну строку. Так:

''.join(['hello', 'world']) -> 'helloworld'

Дополнительные способы см. в разделе Удаление всех пробелов в строке в Python. сделать это.

person csm10495    schedule 28.09.2018

Получить вход, разделить, присоединиться

s = ''.join((input('Enter string: ').split()))
Enter string: vash the stampede
vashthestampede
person vash_the_stampede    schedule 28.09.2018
comment
Я уже попросил пользователя ввести свое предложение заранее. Как мне переписать предложенный вами код без ввода? - person Vee; 28.09.2018
comment
@Vee Та же концепция, которую вы сначала применяете .split(), а затем заключаете ее в ''.join() - person vash_the_stampede; 28.09.2018

Есть несколько разных способов сделать это, но этот кажется мне наиболее очевидным. Это просто и эффективно.

>>> with_spaces = '  The  quick brown       fox  '
>>> list_no_spaces = with_spaces.split() 
>>> ''.join(list_no_spaces)
'Thequickbrownfox'

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

''.join(list_no_spaces) объединяет элементы списка в строку, между элементами которой ничего нет, что вам и нужно: 'Thequickbrownfox'.

Если бы вы использовали ','.join(list_no_spaces), вы бы получили 'The,quick,brown,fox'.

Опытные программисты на Python склонны экономно использовать регулярные выражения. Часто для выполнения работы лучше использовать такие инструменты, как .split() и .join(), и использовать регулярные выражения там, где нет альтернативы.

person Nick    schedule 28.09.2018
comment
Вы хоть тестировали это? - person CristiFati; 28.09.2018
comment
Мое плохое-- пишу много для Groovy в эти дни. Фиксированный. - person Nick; 28.09.2018
comment
Хотя это может ответить на вопрос авторов, в нем отсутствуют поясняющие слова и ссылки на документацию. Необработанные фрагменты кода не очень полезны без фраз вокруг них. Вы также можете найти очень полезным как написать хороший ответ. Пожалуйста, отредактируйте свой ответ. - person hellow; 28.09.2018
comment
Спасибо за ответ. Добавлено объяснение. Первоначальный ответ я написал в спешке по телефону, что некрасиво. На самом деле я написал объяснение, но почему-то потерял его в приложении StackOverflow, и у меня не было времени переписывать. - person Nick; 01.10.2018