Python: Remove Punctuation from a String (3 Different Ways!)

In this tutorial, you’ll learn how to use Python to remove punctuation from a string. You’ll learn how to strip punctuation from a Python string using the str.translate() method, the str.replace() method, the popular regular expression library re , and, finally, using for-loops.
Being able to work with and manipulate strings is an essential skill for any Pythonista. Strings you find via the internet or your files will often require quite a bit of work in order to be able to analyze them. One of the tasks you’ll often encounter is the ability to use Python to remove punctuation from a string.
The Quick Answer: Use .translate() for the fastest performance

Table of Contents
Use Python to Remove Punctuation from a String with Translate
One of the easiest ways to remove punctuation from a string in Python is to use the str.translate() method. The translate() method typically takes a translation table, which we’ll do using the .maketrans() method.
Let’s take a look at how we can use the .translate() method to remove punctuation from a string in Python. In order to do this, we’ll import the built-in string library, which comes bundled with a punctuation attribute.
The .maketrans() method here takes three arguments, the first two of which are empty strings, and the third is the list of punctuation we want to remove. This tells the function to replace all punctuation with None .
Want to learn more? If you want to learn how to use the translate method (and others!) to remove a character from a string in Python, check out my in-depth tutorial here.
What is Python’s string.punctuation?
Python comes built-in with a library, string , which includes an attribute string.punctuation that includes many built-in punctuation characters. Because the library is built-in, you don’t need to worry about needing to install it.
In case you’re curious about what punctuation is included in the string.punctuation , let’s have a quick look:
Use Python to Strip Punctuation from a String with Regular Expressions (regex)
The Python regular expression library, re , feels like it can do just about anything – including stripping punctuation from a string!
Regular expressions are great because it comes built-in with a number of helpful character classes that allow us to select different types of characters. For example, \w\s looks for words or whitespaces. We can select the opposite of this (i.e., anything that isn’t a word or whitespace) using the ^ character. This, then, allows us to select anything that isn’t a word or whitespace, which in our case, it selects punctuation.
Let’s see how we can use regex to remove punctuation in Python:
This is a great approach that looks for anything that isn’t an alphanumeric character or whitespace, and replaces it with a blank string, thereby removing it.
Use Python to Remove Punctuation from a String with str.replace
The str.replace() method makes easy work of replacing a single character. For example, if you wanted to only replace a single punctuation character, this would be a simple, straightforward solution.
Let’s say you only wanted to replace the ! character from our string, we could use the str.replace() method to accomplish this. Let’s take a look at how to:
What we’ve done here, is append the .replace() method to our string. The first parameter is the string to replace, which in this case is our ! character. The second parameter is what to replace it with, which in this case is an empty string.
In the next example, you’ll learn how to use a for loop to replace all punctuation from a string using a for-loop.
Use Python to Strip Punctuation from a String using a for-loop
In the previous section of the tutorial, you learned how to use the str.replace() method to remove a single punctuation character. In this section, we’ll repeat this example, but use a for-loop to be able to remove every punctuation character.
Let’s see how we can do this in Python:
One of the things to note here is that we’re writing over our original string here. We can’t assign a new string, as it will continuously replace itself.
Now that you’ve learned a number of methods, let’s see which of these methods is the fastest.
What is the fastest way to strip a Python String from Punctuation?
In this tutorial, you’ve learned three different methods to remove punctuation from a string in Python. Let’s see which of these methods is the fastest.
For this test, we created a string that’s over 1,000,000,000 characters long and removed all punctuation from a string using Python.
Let’s take a look at the results:

The str.translate() method is the fastest way to remove punctuation from a string in Python – sometimes up to 40 times faster!
Of course, speed isn’t everything, but finding code that significantly slows down your code will often lead to a poorer user experience.
Как удалить знаки препинания из строки, списка и файла в Python
Python Pool предлагает вам подробную статью о том, как удалить знаки препинания из строки, списка и файла в Python с различными примерами.
- Автор записи
Как удалить знаки препинания из строки, списка и файла в Python
При выполнении некоторых проектов на Python нам нужно удалить знаки препинания, чтобы наш код выглядел чище. Итак, имея это в виду, Python Pool предлагает вам подробную статью об удалении знаков препинания из строки, списка и файла в Python.
Вся статья будет разделена на три части.В первой части мы рассмотрим устранение пунктуации из строки. После этого мы перейдем к Списку, а затем посмотрим, как удалить пунктуацию из файла в Python. Соответственно, не теряя времени, давайте сразу перейдем к учебнику.
Что такое Знак препинания?
Согласно Google: Любой из знаков (например, точка, запятая или вопросительный знак), используемый для разделения текста на предложения, предложения и т. Д., известен как знаки препинания. Вообще говоря, в английской грамматике перечислено 14 Знаков препинания: точка (точка), вопросительный знак, восклицательный знак, запятая, точка с запятой, двоеточие, тире, дефис, круглые скобки, скобки, апостроф, кавычки и многоточия. В этой статье мы увидим, как удалить эти знаки препинания из нашей программы с помощью Python.
Удаление знаков препинания из строки в Python
Переходя к первой части нашей статьи, мы обсудим все возможные способы удаления знаков препинания из строки в Python. В то же время копать и исследовать эту конкретную тему. Я узнал о 5 способах удаления знаков препинания из строки. Я постараюсь сделать все возможное, чтобы объяснить на примерах и шаг за шагом пошаговое руководство, чтобы получить четкую идею. Вы не будете заглядывать на другие сайты или видеоуроки после прочтения всего этого сочинения.
Способы удаления знаков препинания из строки в Python
5 способов удалить знаки препинания из строки в Python:
- Использование петель и знаков препинания строка
- Использование регулярного выражения
- С помощью метода translate()
- Использование метода join()
- С помощью Выражения генератора
Давайте начнем наше путешествие с приведенных выше пяти способов удаления знаков препинания из строки в Python.
Использование цикла for и строки пунктуации
Эта программа удалит все знаки препинания из строки. Мы оценим каждую часть strong, используя for loop. Время от времени нам может понадобиться разбить предложение на список фраз. В таких ситуациях мы могли бы сначала вымыть строку и устранить все знаки препинания. Вот хорошая иллюстрация того, как это делается.
Давайте посмотрим на работу на примере:
Выход:
Объяснение
Описанный выше метод удаления пунктуации из строки в python является простым грубым способом выполнения этой задачи. В этом случае мы оцениваем знаки препинания, используя необработанную строку, содержащую знаки препинания, и строим строку после удаления этих знаков препинания.
В этой программе мы сначала определили стронг с именем ‘пунктуации’, состоящий из всех знаков препинания. После этого мы взяли входные данные от пользователя и сохранили их в ‘inp_str’. Затем мы перебираем предоставленную строку с помощью цикла for.Мы проверяем, является ли символ знаком препинания или нет, используя оценку членства в каждой итерации. У нас есть пустой strong, к которому мы включаем (объединяем) символ, если это не пунктуация. В конечном счете, мы показываем очищенную строку.
Использование регулярного выражения для удаления знаков препинания из строки в Python
Python дает нам библиотеку регулярных выражений для управления всеми видами регулярных выражений , а также для управления ими и манипулирования ими. Если вы не знаете, что такое регулярное выражение, позвольте мне сказать вам: Регулярное выражение-это последовательность символов, которые задают шаблон поиска. Обычно эти паттерны используются алгоритмами поиска строк для операций «найти» или» найти и заменить» над строками или для входного сигнала. Это стратегия, разработанная в теоретической информатике и теории формального языка.
Примечание: Нам нужно импортировать библиотеку re для работы с регулярным выражением.
Регулярное выражение в python поставляется с функцией sub-strong, и мы будем использовать эту функцию. Чтобы удалить знаки препинания из строки в python.
Синтаксис re.sub
- шаблон: знаки препинания(шаблон), которые мы хотим заменить.
- замена: Строка замены шаблона (в основном пустая строка).
- original_string: Исходная строка, из которой нам нужно удалить знаки препинания(шаблон).
Давайте посмотрим на работу на примере:
Пример удаления знаков препинания из строки в Python с помощью регулярного выражения
Выход:
Объяснение
В приведенном выше примере нам нужно импортировать библиотеку регулярных выражений, поскольку мы используем функцию, доступную в библиотеке регулярных выражений. Затем у нас есть входная строка с пунктуациями в ней. И мы сохранили его в переменной my_string. Впоследствии, с помощью функции re.sub, которую мы имеем, мы удалили все знаки препинания. Здесь, в параметрах ‘re.sub’, вам может быть интересно, что такое r'[^\w\s]. Итак, в основном, r'[^\w\s] — это шаблон для выбора символов и чисел.
Я предпочитаю использовать регулярные выражения, хотя они просты в обслуживании, а также легче понять (если кто-то другой читает ваш код).
Используя метод translate() для удаления знаков препинания Из строки в Python
Метод string translate — это самый быстрый способ удалить знаки препинания из строки в python. Функция translate() доступна во встроенной библиотеке строк. Итак, нам нужно импортировать модуль string для использования функции translate .
Если вы не знаете, что делает функция перевода, позвольте мне объяснить вам это. Метод translate() возвращает строку, в которой некоторые конкретные символы заменяются символом, описанным в словаре или в таблице сопоставления.
Давайте посмотрим на работу на примере:
Пример Удаления Знаков Препинания Из Строки В Python С Помощью Функции Translate
Объяснение
В приведенном выше примере сначала нам нужно импортировать библиотеку строк. Поскольку метод translate является частью строкового модуля в python. После этого мы инициализировали нашу строку, которая состоит из множества знаков препинания. Мы можем удалить все знаки препинания из этих значений с помощью метода translate() на следующем шаге. Как работает этот метод, он делает копию строки с определенным набором подставленных значений.
Чтобы сделать эту работу, мы будем использовать string.punctuation в качестве параметра в методе translate. Этот метод, являющийся частью библиотеки «string», дает нам список всех знаков препинания.
Использование метода join() для удаления знаков препинания из строки в Python
Мы также можем использовать метод join() для удаления знаков препинания из строки. Если вы не знаете о методе соединения, позвольте мне вкратце объяснить его вам. Метод join() дает гибкий подход к созданию строк из итерационных объектов. Он соединяет каждый компонент итерируемого объекта (например, список, строку и кортеж) с разделителем строк (вызывается строка в методе join ()) и возвращает объединенную строку.
Синтаксис метода join() таков:
Метод join() принимает итерацию в качестве параметра. Давайте посмотрим на примере, как мы можем удалить знаки препинания из строки в python с помощью методаjoin ().
Объяснение:
В приведенном примере мы сначала начинаем импортировать модуль string. Этот модуль предоставляет несколько наборов символов в соответствии с вашими потребностями. В нашем случае мы потребовали все знаки препинания и создали набор этих знаков препинания. Затем мы использовали метод соединения, чтобы объединить все символы, исключив знаки препинания в одной строке.
Функция join может использоваться в качестве однострочного инициализатора для списков и строк. В данном случае мы использовали его для примера строки.
С Помощью Выражения Генератора
Последний, но не менее важный метод удаления пунктуации из строки в Python — это использование генератора. Генераторы-это простой способ создания итераторов. Он возвращает объект (итератор), который мы можем перебирать (по одному значению за раз).
Объяснение:
Существует несколько способов создания генератора. Два из них заключаются в использовании операторов yield и () понимания. В приведенном примере мы использовали yield для создания объекта генератора для нашей строки.
Во — первых, мы начинаем с создания функции, которая принимает строку, а затем выдает ее в конечном операторе. Оператор yield позволяет функции возвращать объект генератора, далее используя функцию next (). В последнем операторе нашего кода мы использовали следующий(образец), чтобы получить элемент из объекта генератора.
Удаление знаков препинания Из Списка в Python
Мы уже говорили о множестве методов удаления знаков препинания из строки в Python. Но строка-это не единственное, что есть в python. У нас тоже есть Списки. Список является одним из самых популярных встроенных типов данных. Таким образом, для нас стало обязательным говорить о таком популярном типе данных и о том, как удалить знаки препинания из списков в Python.
<Если вы, ребята, не знаете, что такое список, позвольте мне кратко объяснить вам это: Список-это самый гибкий тип данных, доступный в Python. Список может быть записан как список разделенных запятыми значений (элементов) в квадратных скобках. Важно то, что элементы в списке не обязательно должны быть одного типа.
Не теряя времени давайте сразу перейдем к примеру:
Пример удаления знаков препинания Из списка в Python
Объяснение:
Списки-один из наиболее часто используемых типов данных в python. Существует несколько способов перебора href=»https://en.wikipedia.org/wiki/List_(abstract_data_type)»>список. В приведенном выше примере мы будем использовать понимание списка для циклического перебора всех элементов списка. href=»https://en.wikipedia.org/wiki/List_(abstract_data_type)»>список. В приведенном выше примере мы будем использовать понимание списка для циклического перебора всех элементов списка.
Во-первых, мы начинаем с создания настраиваемой функции, которая принимает строку в качестве параметра и удаляет все знаки препинания строки. Процесс удаления выполняется путем замены всех знаков препинания пустым символом в строке. Затем мы создаем примерный список, состоящий из нескольких строк, и используем метод понимания списка для применения remove_punch() к каждому элементу списка. Затем, наконец, для проверки списка используется функция print ().
Как удалить Знаки препинания Из файла в Python
При выполнении некоторых проектов и некоторых математических задач возникает необходимость иметь чистый и понятный текстовый файл для работы. В которой нет знаков препинания. Таким образом, мы можем легко выполнять математические вычисления.
Оригинальный Текстовый файл с пунктуацией
Очистите текстовый файл после удаления знаков препинания с помощью Python
Объяснение:
Чтение и запись файлов является неотъемлемой частью кода python, и каждый программист должен знать, как это сделать. Чтобы сделать то же самое, мы использовали метод open() для чтения и записи файлов.
Во-первых, мы объявляем пользовательскую входную переменную, которая просит пользователя ввести имя файла. Затем мы создали настраиваемую функцию для удаления всех строковых знаков препинания. Затем мы читаем файл с помощью оператора open (). Чтобы избежать ошибки «Файл не найден», мы использовали метод try-catch для информирования конечного пользователя о недопустимости имени файла. Затем мы используем remove_punch (), чтобы удалить все знаки препинания и переписать файл с помощью метода open ().
Возможно, Вам Также Будет Интересно Почитать:
- Как Удалить Символ Из Строки Python
- Python Удаляет Дубликаты Из Списка С Примерами
Приложение
Это может иметь применение в предварительной обработке данных в области науки о данных, а также в повседневном программировании.
Вывод
Подводя итог, можно сказать, что в этом посте вы изучили различные методы удаления знаков препинания из строки, списка и файла в Python.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Best way to strip punctuation from a string
For higher versions of Python use the following code:
It’s performing raw string operations in C with a lookup table — there’s not much that will beat that but writing your own C code.
If speed isn’t a worry, another option though is:
This is faster than s.replace with each char, but won’t perform as well as non-pure python approaches such as regexes or string.translate, as you can see from the below timings. For this type of problem, doing it at as low a level as possible pays off.
This gives the following results:
![]()
Regular expressions are simple enough, if you know them.
For the convenience of usage, I sum up the note of striping punctuation from a string in both Python 2 and Python 3. Please refer to other answers for the detailed description.
Python 2
Python 3
![]()
Not necessarily simpler, but a different way, if you are more familiar with the re family.
![]()
string.punctuation is ASCII only! A more correct (but also much slower) way is to use the unicodedata module:
You can generalize and strip other types of characters as well:
It will also strip characters like
*+§$ which may or may not be «punctuation» depending on one’s point of view.
are not part of the punctuation category. You need to also test for the Symbols category as well.
I usually use something like this:
For Python 3 str or Python 2 unicode values, str.translate() only takes a dictionary; codepoints (integers) are looked up in that mapping and anything mapped to None is removed.
To remove (some?) punctuation then, use:
The dict.fromkeys() class method makes it trivial to create the mapping, setting all values to None based on the sequence of keys.
To remove all punctuation, not just ASCII punctuation, your table needs to be a little bigger; see J.F. Sebastian’s answer (Python 3 version):
string.punctuation misses loads of punctuation marks that are commonly used in the real world. How about a solution that works for non-ASCII punctuation?
Personally, I believe this is the best way to remove punctuation from a string in Python because:
- It removes all Unicode punctuation
- It’s easily modifiable, e.g. you can remove the \
if you want to remove punctuation, but keep symbols like $ . - You can get really specific about what you want to keep and what you want to remove, for example \
will only remove dashes. - This regex also normalizes whitespace. It maps tabs, carriage returns, and other oddities to nice, single spaces.
This uses Unicode character properties, which you can read more about on Wikipedia.
![]()
This line actually does not work: remove = regex.compile(ur'[\p |\p|\p
I haven’t seen this answer yet. Just use a regex; it removes all characters besides word characters ( \w ) and number characters ( \d ), followed by a whitespace character ( \s ):
![]()
![]()
Here’s a one-liner for Python 3.5:
![]()
This might not be the best solution however this is how I did it.
![]()
![]()
Here is a function I wrote. It’s not very efficient, but it is simple and you can add or remove any punctuation that you desire:
![]()
![]()
Just as an update, I rewrote the @Brian example in Python 3 and made changes to it to move regex compile step inside of the function. My thought here was to time every single step needed to make the function work. Perhaps you are using distributed computing and can’t have regex object shared between your workers and need to have re.compile step at each worker. Also, I was curious to time two different implementations of maketrans for Python 3
Plus I added another method to use set, where I take advantage of intersection function to reduce number of iterations.
This is the complete code:
This is my results:
![]()
A one-liner might be helpful in not very strict cases:
![]()
Here’s a solution without regex.
- Replaces the punctuations with spaces
- Replace multiple spaces in between words with a single space
- Remove the trailing spaces, if any with strip()
![]()
Why none of you use this?
![]()
I was looking for a really simple solution. here’s what I got:
Here’s one other easy way to do it using RegEx
![]()
![]()
![]()
![]()
![]()
The question does not have a lot of specifics, so the approach I took is to come up with a solution with the simplest interpretation of the problem: just remove the punctuation.
click fraud protection
Это основной способ удаления знаков препинания из строки. Здесь мы анализируем знаки препинания, используя необработанную строку с пунктуацией, а затем строим строку, стирающую эти знаки препинания. Мы используем цикл и необработанную строку с пунктуацией, чтобы удалить из нее знаки препинания. Для выполнения этой задачи мы используем компилятор Spyder в Windows 10. Давай, давайте продемонстрируем работу удаления знаков препинания в строке Python с использованием цикла + строка пунктуации.
Первоначально мы инициализируем строку Python «Python, лучше всего: для! Обучение ;». Затем мы можем распечатать изначально созданную строку. Наш следующий шаг — инициализировать знаки препинания, а затем использовать цикл For Loop, чтобы удалить их из строки. В цикле For Loop мы используем оператор if для проверки знаков препинания. Если условие истинно, то выполняется переход к следующему оператору, в котором функция replace () удаляет знаки препинания из строки Python. Оператор For Loop и if проверяет и строку, и переменную пунктуации, а затем удаляет знаки препинания из данной строки. Затем мы можем использовать оператор печати для отображения отфильтрованной строки после удаления знаков препинания.
для я в my_str:
если я в punc_str:
my_str = my_str. заменять ( я , «» )
Распечатать ( «Отфильтрованная строка после удаления знаков препинания:» + my_str )

Чтобы отобразить результат, запустите программный код всухую и просмотрите строку без пунктира на экране консоли.

Пример 2
В нашем вышеупомянутом методе мы используем цикл For для удаления знаков препинания из строки. Но в этой программе мы удаляем все знаки препинания с пустой строкой с помощью регулярного выражения. Регулярное выражение, называемое регулярным выражением, представляет собой набор символов, описывающий структуру поиска. Обычно эти шаблоны используются для поиска строк с использованием методов «найти» или «найти и заменить» на строках. Regex великолепен, поскольку в него встроены различные полезные библиотеки символов, которые позволяют нам выбирать разные типы символов.
Этот подход ищет все, что не является буквенно-цифровым символом или пробелом, и заменяет его пустой строкой, тем самым устраняя его. Пойдемте, давайте продемонстрируем работу удаления знаков препинания в строке Python с помощью регулярного выражения.
Сначала мы импортируем модуль «re», а затем создаем строку Python «Python, это лучшее: программирование! язык ;». Затем мы можем распечатать изначально созданную строку. Наш следующий шаг — вызвать функцию re.sub (), которая принимает в качестве параметра \ w \ s и my_str. \ W \ s в re.sub () ищет слова и пробелы. Но наша задача — удалить знаки препинания, поэтому мы используем оператор ‘^’ с \ w \ s, который удаляет знаки препинания из строки и затем отображает полученную строку на экране дисплея.
Импортировать повторно
my_str = «Python — лучшее: программирование! язык ;»
Распечатать ( «Наша исходная строка:» + my_str )
res = повторно . суб ( р ‘[^ \ w \ s ]’ , » , my_str )
Распечатать ( «Строка после удаления знаков препинания:» + res )

Запустите код и проверьте, как мы можем использовать регулярное выражение для устранения знаков препинания в Python:

Пример 3
В вышеупомянутом разделе руководства мы обсудили, как использовать методы ForLoop () и regex () для удаления знаков препинания из строки. В этом разделе мы используем метод str.replace () для замены единственной пунктуации. Допустим, вы хотите удалить «!» Из нашей строки, для этого мы могли бы использовать метод str.replace (). Давайте посмотрим, как:
my_string = ‘!Привет. почему? это твое имя [е]? .’
new_string = моя_строка. заменять ( ‘!’ , » )
Распечатать ( new_string )

Запустите код и проверьте, как удалить одиночные знаки препинания из строки Python:

Заключение
В этом руководстве мы обсудили, как избавиться от знаков препинания в строке. Мы разбираемся, как это сделать, используя функцию ForLoop () и регулярные выражения. Оба метода очень полезны и эффективны для удаления знаков препинания из строки Python.