Python | Видаліть розділові знаки з рядка
Багато разів під час роботи з Рядки Python , ми маємо проблему, у якій нам потрібно видалити певні символи з рядків. Це може мати програми попередньої обробки даних у Python .
приклад
Input: 'Gfg, is best: for ! Geeks ;' Output: Gfg is best for Geeks Explanation: Here we can observe the difference between input and output we removed all the punctuation from the input and the ways to this is listed below to do that.
Способи видалення розділових знаків із рядка
Існує багато способів видалити розділові знаки з рядка, але основні з них наведено нижче. Отже, давайте досліджувати їх один за іншим. Нижче наведено методи, які ми розглянемо в цій статті.
- Видалення пунктуації з рядка за допомогою перекладу
- Видалення пунктуації з рядка за допомогою циклу Python
- Видаліть кому з рядка за допомогою циклу Python
- Видалити знаки пунктуації з рядка за допомогою регулярного виразу
- Використання циклу for, пунктуаційного рядка, а не в операторі
- Видалення пунктуації з рядка за допомогою filter()
- Використання методу replace().
Видалення пунктуації з рядка за допомогою перекладу
Перші два аргументи за string.translate метод — порожні рядки, а третій вхід — a Список Python розділові знаки, які слід вилучити. Це вказує методу Python усунути пунктуацію з рядка. Це один із найкращі способи видалення розділових знаків із рядка .
Python3
import> string> test_str> => 'Gfg, is best: for ! Geeks ;'> test_str> => test_str.translate> > (> str> .maketrans('> ', '> ', string.punctuation))> print> (test_str)> |
Вихід:
Gfg is best for Geeks
Видалення пунктуації з рядка за допомогою циклу Python
Це спосіб грубої сили, за допомогою якого можна виконати це завдання. У цьому випадку ми перевіряємо знаки пунктуації за допомогою необробленого рядка, який містить знаки пунктуації, а потім створюємо рядок, видаляючи ці знаки пунктуації.
Python3
# initializing string> test_str> => 'Gfg, is best : for ! Geeks ;'> # printing original string> print> (> 'The original string is : '> +> test_str)> # initializing punctuations string> punc> => '''!()-[]{};:'',./?@#$%^&*_~'''> # Removing punctuations in string> # Using loop + punctuation string> for> ele> in> test_str:> > if> ele> in> punc:> > test_str> => test_str.replace(ele, '')> # printing result> print> (> 'The string after punctuation filter : '> +> test_str)> |
Вихід:
The original string is : Gfg, is best : for ! Geeks ; The string after punctuation filter : Gfg is best for Geeks
Часова складність: O(n)
Допоміжні приміщення: O(n), де n – кількість символів у рядку.
Видаліть кому з рядка за допомогою циклу Python
Це грубий спосіб, у який можна виконати це завдання. У цьому випадку ми перевіряємо кому, використовуючи необроблений рядок, який містить коми, а потім створюємо рядок, видаляючи ці коми.
Python3
def> remove_commas(string):> > result> => ''> > for> char> in> string:> > if> char !> => ','> :> > result> +> => char> > return> result> > input_string> => 'GFG, is, the, best.'> output_string> => remove_commas(input_string)> print> (output_string)> |
Вихід:
GFG is the best
Видаліть пунктуацію з рядка за допомогою регулярного виразу
Частину заміни розділових знаків також можна виконати за допомогою регулярний вираз . У цьому випадку ми замінюємо всі знаки пунктуації порожнім рядком за допомогою певного регулярного виразу.
Python3
import> re> # initializing string> test_str> => 'Gfg, is best : for ! Geeks ;'> # printing original string> print> (> 'The original string is : '> +> test_str)> # Removing punctuations in string> # Using regex> res> => re.sub(r> '[^ws]'> , '', test_str)> # printing result> print> (> 'The string after punctuation filter : '> +> res)> |
Вихід:
The original string is : Gfg, is best : for ! Geeks ; The string after punctuation filter : Gfg is best for Geeks
Використання циклу for, пунктуаційного рядка, а не в операторі
Тут ми побачимо Видалення знаків пунктуації в рядку за допомогою циклу + рядок пунктуації.
Python3
# initializing string> test_str> => 'Gfg, is best : for ! Geeks ;'> # printing original string> print> (> 'The original string is : '> +> test_str)> # initializing punctuations string> punc> => '''!()-[]{};:'',./?@#$%^&*_~'''> res> => ' '> for> ele> in> test_str:> > if> ele> not> in> punc:> > res> +> => ele> > # printing result> print> (> 'The string after punctuation filter : '> +> res)> |
Вихід
The original string is : Gfg, is best : for ! Geeks ; The string after punctuation filter : Gfg is best for Geeks
Часова та просторова складність для всіх методів однакові:
Часова складність: O(n)
Допоміжні приміщення: O(n)
Видалення пунктуації з рядка за допомогою filter()
Метод filter() фільтрує елементи послідовності на основі заданої умови.
У цьому випадку ми можемо використати метод filter() і лямбда-функцію, щоб відфільтрувати знаки пунктуації.
Python3
def> remove_punctuation(test_str):> # Using filter() and lambda function to filter out punctuation characters> > result> => ''.join(> filter> (> lambda> x: x.isalpha()> or> x.isdigit()> or> x.isspace(), test_str))> > return> result> test_str> => 'Gfg, is best : for ! Geeks ;'> print> (> 'The original string is : '> +> test_str)> result> => remove_punctuation(test_str)> print> (> 'The string after punctuation filter : '> +> result)> #This code is contributed by Edula Vinay Kumar Reddy> |
Вихід
The original string is : Gfg, is best : for ! Geeks ; The string after punctuation filter : Gfg is best for Geeks
Часова складність: O(n)
Допоміжні приміщення: O(n)
Видалення пунктуації з рядка за допомогою методу replace().
Імпортуйте модуль string, потім ініціалізуйте вхідний рядок і надрукуйте оригінальний рядок. Перегляньте кожен знак пунктуації в константі пунктуації рядка після того, як він використає метод replace(), щоб видалити кожен знак пунктуації з вхідного рядка. а потім вивести отриманий рядок після видалення розділових знаків.
Python3
import> string> # initializing string> test_str> => 'Gfg, is best : for ! Geeks ;'> # printing original string> print> (> 'The original string is : '> +> test_str)> # Removing punctuations using replace() method> for> punctuation> in> string.punctuation:> > test_str> => test_str.replace(punctuation, '')> # printing result> print> (> 'The string after punctuation filter : '> +> test_str)> |
Вихід
The original string is : Gfg, is best : for ! Geeks ; The string after punctuation filter : Gfg is best for Geeks
Аналіз часової складності: O(len(string.punctuation) * len(test_str)) оскільки цикл for повторює всі знаки пунктуації в константі string.punctuation, що займає O(len(string.punctuation)) часу.
Аналіз допоміжного простору: O(1) . Оскільки вхідний рядок змінено на місці, тож для збереження результату не потрібен додатковий простір.