Как удалить пробелы из многострочного строкового значения в Python без использования регулярного выражения

#python

#питон

Вопрос:

У меня есть строковое значение, печатаемое в нескольких строках. Я использовал три одинарные / двойные кавычки для присвоения строкового значения

 artist = """
       Mariah
       Carey
       """
 name = 'My all'
 realeased_year = 1997
 genre = 'Latin'
 duration_seconds = 231

print(f'{artist}(full name has {len(artist.strip().replace(" ", ""))} characters) and her song '{name}' was released in {realeased_year   1}')
 

введите описание изображения здесь
Он выводит неправильное количество символов: 12

Однако, когда я присваиваю строковое значение в одной строке, например

 artist = 'Mariah Carey'
 

У меня есть правильное количество символов 11
введите описание изображения здесь

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

Комментарии:

1. Если вы попытаетесь выполнить artist = «Marian Carey» и print(len(artist.strip())). Вы найдете тот же вывод длиной 12 символов. Пожалуйста, проверьте еще раз.

Ответ №1:

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

 >>> artist = """
...        Mariah
...        Carey
...        """
>>> ' '.join(artist.split())
'Mariah Carey'
 

Это разделит строку на список слов. Затем эти слова объединяются одним разделителем пробела.

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

 >>> ''.join(artist.split())
'MariahCarey'
 

Измените отображаемую строку:

 >>> print(f'{artist}(full name has {len("".join(artist.split()))} characters)')

   Mariah
   Carey
   (full name has 11 characters)
 

Комментарии:

1. как вы думаете, вы можете предоставить полную версию своего ответа? столкнувшись с синтаксической ошибкой, спасибо

2. @DurdonaA.: для меня выглядит как полная версия… Я вырезал и вставил дословно из терминала.

3. форматирование с помощью {f»»} выдает синтаксическую ошибку

4. Используйте двойные кавычки, подобные этому: "".join()

5. @DurdonaA.: добро пожаловать. Пожалуйста, подумайте о принятии этого ответа, если вы считаете, что он отвечает на ваш вопрос.

Ответ №2:

Когда вы используете тройные кавычки и используете ввод для разделения строк, python вставляет n символ, который также добавляется к общему количеству символов. Итак , в следующей строке

 print(f'{artist}(full name has {len(artist.strip().replace(" ", ""))} characters) and her song '{name}' was released in {realeased_year   1}')
 

в функции замены вместо " " использования "n" .

Комментарии:

1. получение ошибки SyntaxError: часть выражения f-string не может включать обратную косую черту

2. Если вам нужно или вы хотите использовать f-string, вы можете присвоить len(artist.strip().replace(" ", "")) переменной и использовать эту переменную в своем print заявлении. например. length = len(artist.strip().replace(" ", "")) и использовать length в print .

3. Его работа отлично соответствует требованию вопроса.