Как удалять пробелы в Python и форматировать их
В Python есть несколько методов удаления пробелов в строках. Методы могут быть использованы при удалении пробелов во всем тексте, начале или конце.
Из-за того что строки являются неизменяемыми объектам каждая операция удаления или замены символов создает новую строку. Что бы сохранить новую строку мы должны будем присвоить ее переменной.
Навигация по посту
Удаление пробелов в начале и конце строки со strip()
Для удаления пробелов в начале и конце строки можно использовать функцию strip(), как на примере ниже:
Для удаления символов в начале текста есть lstrip():
Противоположная операция — rstrip(), удалит символы только справа:
Замена всех знаков с replace()
Когда нужно удалить все нужные символы используйте replace():
В отличие от методов strip с replace можно заменить задвоенные символы:
Удаление с join и split
Если нужно удалить все пробелы и символы новой строки '\n' можно преобразовать строку в массив (используя пробелы как разделитель) и преобразовать массив обратно в строку уже добавив пробелы между значениями:
Используем Python Pillow для вставки текста и изображения в картинку
Использование translate()
translate возвращает копию строки в которой все символы будут заменены в соответствии с таблицей. С помощью следующего способа эта операция пройдет с пробелами:
Использование регулярных выражений
Используя регулярные выражения мы можем получить каждый из результатов полученных выше. Знак пробела, в регулярных выражениях, обозначается как '\s'. Знак '+' говорит об одном или множестве повторений символа. В примере ниже будут заменены все символы пробела:
Для замены указанных знаков в начале текста можно использовать знак '^':
Конец текста обозначает знак '$'. С помощью его мы заменим нужные символы в конце строки в следующем примере:
Используя знак '|', который в регулярных выражения работает как 'or', мы сможем заменить символы в начале и конце:
Строки (Strings)
полезный метод string в котором есть наборы символов.
Объединение литералов строк
В Python есть очень удобная функциональность — объединение литералов строк. Она дает возможность разбивать строки на части при написании кода и даже переносить эти части на разные строки кода. Это нужно как для разделения длинного текста на части из-за рекомендаций по максимальной длине строки в Python, так и для удобства восприятия.
Можно переносить составляющие строки на разные строки, но только если они в скобках:
Этим очень удобно пользоваться в регулярных выражениях:
Так регулярное выражение можно разбивать на части и его будет проще понять. Плюс можно добавлять поясняющие комментарии в строках.
Также этим приемом удобно пользоваться, когда надо написать длинное сообщение:
Методы строк в Питоне
Полезные методы для работы со строками
При автоматизации очень часто надо будет работать со строками, так как конфигурационный файл, вывод команд и отправляемые команды — это строки.
Знание различных методов (действий), которые можно применять к строкам, помогает более эффективно работать с ними.
Строки — неизменяемый тип данных. Поэтому все методы, которые преобразуют строку, возвращают новую строку, а исходная строка остается неизменной.
str.join
eng: join — присоединиться
- str — строка-разделитель,
- iterable — итерируемый объект с элементами в виде строк.
Метод join собирает список строк в одну строку с разделителем, который указан перед join:
upper, lower, swapcase, capitalize
Методы upper() , lower() , swapcase() , capitalize() выполняют преобразование регистра строки:
Очень важно обращать внимание на то, что часто методы возвращают преобразованную строку. И, значит, надо не забыть присвоить ее какой-то переменной (можно той же).
str.count
Метод count() используется для подсчета того, сколько раз символ или подстрока встречаются в строке:
str.find
Методу find() можно передать подстроку или символ, и он покажет, на какой позиции находится первый символ подстроки (для первого совпадения):
str.rfind
Метод rfind() похож на find(), за исключением того, что поиск выполняется справа налево.
str.startswith, endswith
Проверка на то, начинается или заканчивается ли строка на определенные символы (методы startswith() , endswith() ):
Методам startswith() и endswith() можно передавать несколько значений (обязательно как кортеж):
str.replace
- old — str , подстрока или символ который меняем
- new — str , подстрока или символ на который меняем
- count — int , сколько раз меняем
Замена последовательности символов в строке на другую последовательность (метод replace() ):
str.strip
- chars — строка, набор удаляемых символов.
Часто при обработке файла файл открывается построчно. Но в конце каждой строки, как правило, есть какие-то спецсимволы (а могут быть и в начале). Например, перевод строки.
Для того, чтобы избавиться от них, очень удобно использовать метод strip() :
По умолчанию метод strip() убирает пробельные символы.
В этот набор символов входят: \t\n\r\f\v
Методу strip можно передать как аргумент любые символы. Тогда в начале и в конце строки будут удалены все символы, которые были указаны в строке:
Метод strip() убирает спецсимволы и в начале, и в конце строки. Если необходимо убрать символы только слева или только справа, можно использовать, соответственно, методы lstrip() и rstrip() .
str.split
- sep=None — str , разделитель. Может содержать как один, так и несколько символов;
- maxsplit=-1 — int , сколько раз делить строку. По умолчанию -1 — неограниченно.
Метод split() разбивает строку на части, используя как разделитель какой-то символ (или символы) и возвращает список строк:
В примере выше string1.split() разбивает строку по пробельным символам и возвращает список строк. Список записан в переменную commands.
По умолчанию в качестве разделителя используются пробельные символы (пробелы, табы, перевод строки), но в скобках можно указать любой разделитель:
В списке commands последний элемент это строка с вланами, поэтому используется индекс -1. Затем строка разбивается на части с помощью split commands[-1].split(',') . Так как, как разделитель указана запятая, получен такой список ['10', '20', '30', '100-200'] .
Пример разделения адреса на октеты:
Полезная особенность метода split с разделителем по умолчанию — строка не только разделяется в список строк по пробельным символам, но пробельные символы также удаляются в начале и в конце строки:
У метода split() есть ещё одна хорошая особенность: по умолчанию метод разбивает строку не по одному пробельному символу, а по любому количеству. Это будет, например, очень полезным при обработке команд show:
А вот так выглядит разделение той же строки, когда один пробел " " используется как разделитель:
str.partition
Метод str.partition(sep) разбивает строку при первом появлении разделителя sep и вернет кортеж, содержащий часть строки str перед разделителем, сам разделитель sep и часть строки str после разделителя.
Разделитель sep может содержать как один, так и несколько символов.
Если разделитель не найден, возвращает кортежи, содержащий саму строку str
- partition — за которой следуют две пустые строки (str, '', '') .
- rpartition — перед которой следуют две пустые строки ('', '', str) .
При вызове метода без аргументов поднимается исключение:
- TypeError: partition() takes exactly one argument (0 given)
В случаях, когда требуется, чтобы деление строки происходило при последнем появлении разделителя, используйте str.rpartition().
Когда требуется разделить строку на список строк по определенному разделителю, используйте str.split().
судя по ответу на stackoverflow.com, является самым быстрым методоб разбиения строки.
str.partition
str.rpartition
Делает все тоже, что и str.partition(). Только разделяет справа.
- Если разделитель не найден, возвращает кортежи, содержащий саму строку str
- rpartition — перед которой следуют две пустые строки ('', '', str) .
str.maketrans
Создает таблицу преобразования символов для метода str.translate()
- x — словарь или строка символов,
- y, z — строка символов.
- сопоставление, используемое в str.translate().
Статический метод str.maketrans() создает и возвращает таблицу преобразования символов, используемую методом строки str.translate().
Если метод принимает только один аргумент x, то это должен быть словарь, отображающий
- порядковые номера Unicode (целые числа) в порядковые номера Unicode
- символы (строки длиной 1) в строки (произвольной длины) или None.
После этого символьные ключи будут преобразованы в порядковые.
Если есть два аргумента x и y , то они должны быть строками одинаковой длины, тогда в результирующем сопоставлении, каждый символ в x будет сопоставлен с символом в той же позиции в y .
Если строки окажутся неодинаковой длины, то поднимается исключение ValueError: the first two maketrans arguments must have equal length.
Если существует третий аргумент z , это должна быть строка, символы которой не будут отображаться, т.е. будут удаляться.
5 Ways To Remove Spaces of a Python String
Handling strings, especially messy strings, is the daily work of Python developers and data scientists. One of the most common symptoms of a messy string is that there are unnecessary or duplicate spaces in it.
Fortunately, no matter how messy a string is and how complicated a scenario is, Python can provide us a corresponding way to remove spaces as we like.
This article will introduce 5 different methods to remove spaces in a messy Python string based on different scenarios and requirements. After reading, you can choose the most appropriate way for your code. More importantly, you will feel the flexibility and elegance of Python again.
1. Remove Leading and Trailing Spaces of a Python String
The simplest case is that all the leading and trailing spaces of a string are unnecessary. For this, we can just use the strip() function to remove them all.
The above code shows how easy it is to use the strip() function. There is one thing worth to mention: Strings are immutable in Python. The original quote string was not changed. We need to assign the result to a new string after removed the spaces.
In addition, there are two variants of the strip() function:
- lstrip() : only remove the leading spaces of a string
- rstrip() : only remove the trailing spaces of a string
2. Remove All Spaces of a Python String
Since removing spaces of a string is the same as replacing every space by an empty character, we can use the replace() function to do this job. This is a common method for cases that we need to remove all spaces of a string.
Python strip() – How to Trim a String or Line
Dionysia Lemonaki
In this article, you’ll learn how to trim a string in Python using the .strip() method.
You’ll also see how to use the .lstrip() and .rstrip() methods, which are the counterparts to .strip() .
Let’s get started!
How to trim a string in Python
Python has three built-in methods for trimming leading and trailing whitespace and characters from strings.
- .strip()
- .lstrip()
- .rstrip()
Each method returns a new trimmed string.
How to Remove Leading and Trailing Whitespace from Strings in Python
When the .strip() method has no argument, it removes any leading and/or trailing whitespace from a string.
So, if you have whitespace at the start and/or end of a word or phrase, .strip() alone, by default, will remove it.
The following variable greeting has the string «Hello» stored in it. The string has space both to the right and left of it.
To remove both of them, you use the .strip() method, like so:
You could have also used the .strip() method in this way:
How to Remove Leading and Trailing Characters from Strings in Python
The .strip() method takes optional characters passed as arguments.
The characters you add as arguments specify what characters you would like to remove from the start and end of the string.
Below is the general syntax for this case:
The characters you specify are enclosed in quotation marks.
So, for example, say you have the following string:
You want to remove «H» and «?», which are at the beginning and at end of the string, respectively.
To remove them, you pass both characters as arguments to strip() .
Notice what happens when you want to remove «W» from «World», which is at the middle and not at the start or end of the string, and you include it as an argument:
It will not be removed! Only the characters at the start and end of said string get deleted.
That being said, look at the next example.
Say you want to remove the first two and the last two characters of the string:
The first two characters («He») and the last two («d?») of the string have been removed.
Another thing to note is that the argument does not remove only the first instance of the character specified.
For example, say you have a string with a few periods at the beginning and a few exclamation marks at the end:
When you specify as arguments . and ! , all instances of both will get removed:
How to Remove Only Leading Whitespace and Characters from Strings in Python
To remove only leading whitespace and characters, use .lstrip() .
This is helpful when you want to remove whitespace and characters only from the start of the string.
An example for this would be removing the www. from a domain name.
In this example I used the w and . characters both at the start and the end of the string to showcase how .lstrip() works.
If I’d used .strip(w.) I’d have the following output:
The same goes for removing whitespace.
Let’s take an example from a previous section:
Only the whitespace from the start of the string has been removed from the output.
How to Remove only Trailing Whitespace and Characters from Strings in Python
To remove only trailing whitespace and characters, use the .rstrip() method.
Say you wanted to remove all punctuation only from the end of a string.
You would do the following:
Same goes for whitespace.
Taking again the example from earlier, this time the whitespace would be removed only from the end of the output:
Conclusion
And there you have it! You now know the basics of how to trim a string in Python.
- Use the .strip() method to remove whitespace and characters from the beginning and the end of a string.
- Use the .lstrip() method to remove whitespace and characters only from the beginning of a string.
- Use the .rstrip() method to remove whitespace and characters only from the end of a string.
If you want to learn more about Python, check out freeCodeCamp’s Python Certification. You’ll start learning in an interacitve and beginner-friendly way. You’ll also build five projects at the end to put into practice and help reinforce what you learned.