- Как в Python удалить пробелы из строки
- Как удалить пробелы из строки с помощью replace()
- Используем методы split() и join()
- Как удалить пробелы из строки с помощью translate()
- Заключение
- В строке заменить пробелы символом *
- Как удалять пробелы в Python и форматировать их
- Удаление пробелов в начале и конце строки со strip()
- Замена всех знаков с replace()
- Удаление с join и split
- Использование translate()
- Использование регулярных выражений
- Замена пробелов на указанные символы. Разбор задачи
- Проверяем
Как в Python удалить пробелы из строки
Строки в Python – это неизменяемые объекты. Поэтому после инициализации строки мы не можем просто так вносить изменения, добавлять или исключать какие-либо символы.
Python имеет огромный набор функций, которые можно использовать при работе со строками. Но все строковые функции возвращают новое значение, поскольку они не могут изменить исходное значение строки.
Давайте ещё раз обратим внимание на этот момент. Любая функция, которая работает со строковыми значениями в Python, возвращает новую строку, которую можно присвоить новой переменной. Только таким образом мы можем изменить исходную строку.
Наиболее часто используемые строковые функции в Python – это capitalize(), split(), count(), find(), index(), join(), replace() и другие.
В этой статье мы разберем, как в Python удалить пробелы из строки. Мы рассмотрим три метода, которые чаще всего используются с этой целью.
Предположим, у нас есть следующая строка:
PyString = ‘This is Python String \n\t’
Помимо букв, строка PyString содержит четыре пробела, символ новой строки \n и символ табуляции \t . Давайте на примерах рассмотрим, как можно удалить эти пробелы из PyString .
Как удалить пробелы из строки с помощью replace()
Как упоминалось выше, функция replace() – это одна из наиболее часто используемых строковых функций в Python. С ее помощью можно заменить определенный символ, слово или фразу в указанной строке. Синтаксис функции replace():
variableName.replace(OldString, NewString, count)
Давайте разберем представленный синтаксис подробнее.
Прежде всего, VariableName – это переменная, которая содержит исходную строку.
OldString – это слово, символ или фраза, которые необходимо заменить. NewString – это новое слово, символ или фраза, которые должны заменить старое значение в строке. Эти два аргумента являются обязательными.
Наконец, count указывает количество вхождений старого значения, которое следует заменить. Другими словами, count показывает, сколько раз нужно заменить старое значение OldString на новое NewString . Этот параметр необязателен. Если счетчик count не указан, по умолчанию будут заменены все вхождения OldString .
Указав в качестве OldString пробел, а в качестве NewString пустую строку, и пропустив параметр count , мы избавимся от всех пробелов в исходной строке PyString . Для наглядности даем пример выполнения кода в консоли:
>>> PyString = 'This is Python String \n\t' >>> PyString.replace(" ", "") 'ThisisPythonString\n\t'
Как мы видим, мы удалили все пробелы, но символы \n\t остались в строке. Если запустить print(PyString.replace(» «, «»)) , выведется строка ThisisPythonString и пустая строка следом.
Используем методы split() и join()
Следующий пример – это комбинация split() и join() — двух строковых методов Python. Функция split() разделяет строку по указанному разделителю и возвращает разделенные элементы исходной строки в виде списка. Общий синтаксис функции split() выглядит следующим образом:
variableName.split(separator, count)
Итак, давайте разбираться. VariableName – это переменная, содержащая исходную строку.
Аргумент separator определяет разделитель, который будет использоваться для разделения исходной строки. Этот аргумент необязателен. Значение по умолчанию – пробел.
Счетчик count определяет количество разделений, которое необходимо сделать. Это также необязательный аргумент. Его значение по умолчанию – это все вхождения. То есть сколько раз разделитель встречается, столько раз мы и дробим строку.
Кроме того, есть обратная функция — join(), которая принимает итерируемый объект и возвращает все его элементы, объединенные в одну строку. Ниже приведен синтаксис функции join():
Рассмотрим, что здесь есть. Аргумент iterable представляет собой итерируемый объект, содержащий элементы, которые будут возвращены в виде одной строки. Этот аргумент обязателен.
VariableName – это строка, которая служит сепаратором. Когда элементы iterable будут объединены, этот сепаратор будет вставлен между ними. Если VariableName указать как пустую строку ( «» ), объединяемые элементы будут просто идти друг за другом, без разделителей.
Используем методы split() и join(), чтобы удалить пробелы из строки PyString :
>>> PyString = 'This is Python String \n\t' >>> "".join(PyString.split()) 'ThisisPythonString'
В результате мы получили то, что хотели – все пробелы удалены. Также мы удалили символы \n\t .
Как удалить пробелы из строки с помощью translate()
В последнем примере мы рассмотрим, как удалить пробелы из строки при помощи такой функции, как translate().
Функция translate() чем-то схожа с функцией replace(). Общая цель функций translate() и replace() – заменить определенный символ в заданной строке на другой символ. Однако определённые различия всё-таки есть.
Давайте посмотрим на синтаксис функции translate():
varibaleName.transalate(value)
Здесь VariableName – это переменная, содержащая строку. Аргумент value представляет собой таблицу сопоставления или символ словаря, который определяет, как выполнять замену.
Ниже приведен код с использованием функции translate() для замены пробелов в строке:
>>> PyString = 'This is Python String \n\t' >>> mytable = PyString.maketrans('','',' \n\t\r') >>> PyString.translate(mytable) 'ThisisPythonString'
Мы удалили все пробелы, а также символы \n\t .
Заключение
В Python есть несколько способов удалить пробелы в строке. В этой статье мы разобрали несколько простых для понимания примеров.
Ключевой момент, который следует иметь в виду, заключается в том, что строки в Python неизменяемы, поэтому мы не можем просто удалить или добавить какой-либо символ. Необходимо создать новую строку для хранения измененной строки.
Надеемся, данная статья была полезна для вас. Успехов в написании кода!
В строке заменить пробелы символом *
В строке заменить пробелы звездочкой. Если встречается подряд несколько пробелов, то их следует заменить одним знаком * , пробелы в начале и конце строки удалить.
Решение задачи на языке программирования Python
Решение данной задачи классическим способом, без использования продвинутых возможностей Python, может быть таким.
Сначала избавляемся от пробелов в начале и конце строки, если они имеются. Для этого перебираем строку посимвольно сначала или с конца. Как только встречается первый непробельный символ, берем срез от него до конца строки или до начала, в случае удаления пробелов с конца.
Далее снова посимвольно перебираем строку. Если очередной символ не является пробелом, то формировать новую строку добавлением к ней этого символа. В ветку elif попадают символы пробела, но здесь проверяется не был ли равен предыдущий символ пробелу. Если это не так (не был равен), то только тогда к новой строке добавляется «*». Лишние пробелы будут просто пропущены и не добавлены к новой строке.
s = input() i = 0 while s[i] == ' ': i += 1 s = s[i:] i = len(s) while s[i - 1] == ' ': i -= 1 s = s[:i] s_new = s[0] i = 1 while i len(s): if s[i] != ' ': s_new += s[i] elif s[i - 1] != ' ': s_new += '*' i += 1 print(s_new + '!')
Пример выполнения скрипта:
one two three four f*ve six seven one*two*three*four*f*ve*six*seven!
Однако в языке программирования Python данную задачу проще решить, преобразовав строку в список. С помощью метода split строка разделяется на слова по пробелам. При этом неважно сколько их. Далее остается только снова собрать слова в строку. Проще это сделать строковым методом join :
s = input() l = s.split() s1 = '*'.join(l) print(s1)
Как удалять пробелы в Python и форматировать их
В Python есть несколько методов удаления пробелов в строках. Методы могут быть использованы при удалении пробелов во всем тексте, начале или конце.
Из-за того что строки являются неизменяемыми объектам каждая операция удаления или замены символов создает новую строку. Что бы сохранить новую строку мы должны будем присвоить ее переменной.
Удаление пробелов в начале и конце строки со 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 .
Теперь давайте обратим внимание на дополнение к условию: нужно игнорировать все дополнительные пробелы в начале или конце строки. Разделаемся с этим сразу же, применив метод Python 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