Как удалять пробелы в Python и форматировать их
В Python есть несколько методов удаления пробелов в строках. Методы могут быть использованы при удалении пробелов во всем тексте, начале или конце.
Из-за того что строки являются неизменяемыми объектам каждая операция удаления или замены символов создает новую строку. Что бы сохранить новую строку мы должны будем присвоить ее переменной.
Навигация по посту
- Удаление пробелов в начале и конце строки со strip()
- Замена всех пробелов с replace()
- Удаление с join и split
- Использование translate()
- Использование регулярных выражений
Удаление пробелов в начале и конце строки со strip()
Для удаления пробелов в начале и конце строки можно использовать функцию strip(), как на примере ниже:
string = " My name is \n Alex " string = string.strip()
Для удаления символов в начале текста есть lstrip():
word = " My name is \n Alex " word = word.lstrip()
Противоположная операция — rstrip(), удалит символы только справа:
i = " My name is \n Alex " i = i.rstrip()
Замена всех знаков с replace()
Когда нужно удалить все нужные символы используйте replace():
d = " My name is \n Alex " d = d.replace(' ', '')
В отличие от методов strip с replace можно заменить задвоенные символы:
v = " My name is \n Alex " v = v.replace(' ', '')
Удаление с join и split
Если нужно удалить все пробелы и символы новой строки ‘\n’ можно преобразовать строку в массив (используя пробелы как разделитель) и преобразовать массив обратно в строку уже добавив пробелы между значениями:
n = " My name is \n Alex " n = n.replace(' ', '')
Вам так же будет интересно:
Используем Python Pillow для вставки текста и изображения в картинку
Использование translate()
translate возвращает копию строки в которой все символы будут заменены в соответствии с таблицей. С помощью следующего способа эта операция пройдет с пробелами:
import string s = ' word1 word2 word3' s = s.translate()
Использование регулярных выражений
Используя регулярные выражения мы можем получить каждый из результатов полученных выше. Знак пробела, в регулярных выражениях, обозначается как ‘\s’. Знак ‘+’ говорит об одном или множестве повторений символа. В примере ниже будут заменены все символы пробела:
import re h = ' Hello world 1 2 3' h = re.sub(r'\s+', '', h)
Для замены указанных знаков в начале текста можно использовать знак ‘^’:
import re j = ' Hello world 1 2 3' j = re.sub(r'^\s+', '', j)
Конец текста обозначает знак ‘$’. С помощью его мы заменим нужные символы в конце строки в следующем примере:
import re string = ' Hello world 1 2 3 ' string = re.sub(r'\s+$', '', string)
Используя знак ‘|’, который в регулярных выражения работает как ‘or’, мы сможем заменить символы в начале и конце:
import re string = ' Hello world 1 2 3 ' string = re.sub(r'^\s+|\s+$', '', string)
Замена пробелов на указанные символы. Разбор задачи
Давайте рассмотрим простую задачку на работу со строками.
#Напишите метод для замены всех пробелов в строке на '%20'. #Игнорируйте любые дополнительные пробелы в начале или конце строки.
Вероятно, вы замечали, что URL-адреса никогда не содержат пробелов. Если вы попробуете ввести в браузере URL и включите в него пробел, браузер конвертирует его в экранированный символ «%20». Попробуйте набрать в Chrome http://google.com/ / , и вы увидите, что адрес преобразуется в http://google.com/%20/ . Не то чтобы этот адрес привел вас куда-то, но принцип должен быть понятен.
В этой задаче нам нужно написать метод, который будет делать то, что только что сделал ваш браузер: принимать строку и возвращать ее в зашифрованной форме, с пробелами, замененными на «%20».
Начнем с определения нашего метода, принимающего строку s .
def urlify(s): pass
Теперь давайте обратим внимание на дополнение к условию: нужно игнорировать все дополнительные пробелы в начале или конце строки. Разделаемся с этим сразу же, применив метод Python strip() . Этот метод, собственно, удаляет любые пробелы в начале и конце строки.
def urlify(s): s = s.strip()
Теперь давайте подумаем, как выловить пробелы внутри строки. Мы можем перебрать строку в цикле и проверить каждый символ, заменяя обнаруженные пробелы. Но есть и более простой способ сделать это. В Python есть встроенные методы, позволяющие делить строку по заданному символу. После разделения мы сможем соединить отрезки вместе, заменив пробелы на «%20».
Начнем с вызова метода split() . Мы можем вызвать его после нашего метода .strip() . Этот метод принимает один аргумент — символ-разделитель. В нашем случае это единичный пробел.
def urlify(s): s = s.strip().split(" ")
Это дает нам список строк. Например, если строка была «Hello my name is Pythonist», в списке s теперь содержатся строки [«Hello», «my», «name», «is», «Pythonist»] .
Теперь нам нужно склеить все обратно. Метод join() немного странный. Вы вызываете его для строки, которую хотите вставить между словами, а список слов передаете в качестве аргумента. Таким образом, если наша замещающая строка — «%20», мы вызываем после нее метод .join() и передаем ему в качестве аргумента наш список s . Можно переопределить переменную s , но здесь мы просто вернем результат.
def urlify(s): s = s.strip().split(" ") return ("%20").join(s)
Вот и все! Повторим:
- Пробелы в начале и конце строки обрезаются при помощи метода strip() .
- Строка делится по символу пробела при помощи метода split() .
- Метод join() объединяет строку, вставляя между ее частями «%20».
Проверяем
Передаем нашему методу urlify строку, содержащую пробелы. Должна вернуться строка, в которой эти пробелы будут заменены на экранированный символ URL.
print(urlify("My name is Pythonist ")) # -> My%20name%20is%20Pythonist
Как удалить пробелы из строки в Python
Есть несколько способов удалить пробелы из строки в Python. Python String неизменяем, поэтому мы не можем изменить его значение. Любая функция, которая управляет строковым значением, возвращает новую строку, и мы должны явно назначить ее строке, иначе строковое значение не изменится.
Допустим, у нас есть пример строки, определенной как:
s = ' Hello World From Pankaj \t\n\r\tHi There '
Эта строка имеет разные типы пробелов, а также символы новой строки.
Давайте посмотрим на различные функции для удаления пробелов.
strip()
Строковая функция strip() удаляет начальные и конечные пробелы.
>>> s.strip() 'Hello World From Pankaj \t\n\r\tHi There'
Если вы хотите удалить только начальные или конечные пробелы, используйте вместо них функцию lstrip() или rstrip().
replace()
Мы можем использовать replace(), чтобы удалить все пробелы из строки. Эта функция также удалит пробелы между словами.
>>> s.replace(" ", "") 'HelloWorldFromPankaj\t\n\r\tHiThere'
join() с split()
Если вы хотите избавиться от всех повторяющихся пробелов и символов новой строки, вы можете использовать функцию join() с функцией string split().
>>> " ".join(s.split()) 'Hello World From Pankaj Hi There'
translate()
Если вы хотите избавиться от всех пробелов, а также от символов новой строки, вы можете использовать строковую функцию translate().
>>> import string >>> s.translate() 'HelloWorldFromPankajHiThere'
Python удаляет пробелы из строки с помощью Regex
Мы также можем использовать регулярное выражение для поиска пробелов и их удаления с помощью функции re.sub().
import re s = ' Hello World From Pankaj \t\n\r\tHi There ' print('Remove all spaces using RegEx:\n', re.sub(r"\s+", "", s), sep='') # \s matches all white spaces print('Remove leading spaces using RegEx:\n', re.sub(r"^\s+", "", s), sep='') # ^ matches start print('Remove trailing spaces using RegEx:\n', re.sub(r"\s+$", "", s), sep='') # $ matches end print('Remove leading and trailing spaces using RegEx:\n', re.sub(r"^\s+|\s+$", "", s), sep='') # | for OR condition
Remove all spaces using RegEx: HelloWorldFromPankajHiThere Remove leading spaces using RegEx: Hello World From Pankaj Hi There Remove trailing spaces using RegEx: Hello World From Pankaj Hi There Remove leading and trailing spaces using RegEx: Hello World From Pankaj Hi There
Замена пробела на дефис
Всем здравствуйте. Прохожу курс по питону на stepik, и нарвалась на задание которое никак не получается выполнить. Суть в чем: Вводится два слова через пробел. Задача преобразовать данную фразу таким образом, чтобы все буквы стали заглавными и между буквами в каждом слове появились дефисы. Циклы использовать нельзя (в курсе еще не было этой темы). Вот до чего дошла я, на большее меня не хватает(
1 2 3 4
a, b = list(map(str, input().split())) a.split() b.split() print(*a.upper(), *b.upper(), sep="-") # выходит Б-Р-О-С-А-Й-К-У-Р-И-Т-Ь, а должно быть Б-Р-О-С-А-Й К-У-Р-И-Т-Ь
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Замена пробела
дан произвольный текст все слова в котором разделены пробелом. Подсчитать их кол-во и заменить.
Замена пробела на #
Здравствуйте, помогите студенту расправиться с лабой. Куда и как правильно сунуть цикл while, чтобы.
Замена последнего пробела
имеется ячейка (она бывает в 2ух форматах: 1-"***-####(пробел)№(пробел)#####(пробел)*".
Замена пробела на символ (Си).
Всем доброго времени суток, прошу помочь наставить меня на путь истинный в следующем задании.
Замена пробела запятой
помогите решить задачу: Даны символы разделенными пробелами. В строке вставить вместо пробела.