Удалить в конце специальные символы - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь использовать регулярные выражения для очистки некоторых данных, прежде чем вставлять элементы в базу данных.Я не смог решить проблему с удалением специальных символов в конце моих строк.

Как записать это регулярное выражение в only , удалить специальные символы в конце?

import re

strings = ['string01_','str_ing02_^','string03_@_', 'string04_1', 'string05_a_']

for item in strings:
  clean_this = (re.sub(r'([_+!@#$?^])', '', item))
  print (clean_this)

outputs this:
string01 # correct
string02 # incorrect because it remove _ in the string
string03 # correct
string041 # incorrect because it remove _ in the string
string05a # incorrect because it remove _ in the string and not just the trailing _

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Вы также можете использовать специальный метод rstrip для строк

[s.rstrip('_+!@#$?^') for s in strings]
# ['string01', 'str_ing02', 'string03', 'string04_1', 'string05_a']
0 голосов
/ 18 декабря 2018

Вы можете повторить класс символов 1+ раз, иначе будет заменен только 1 специальный символ.Затем укажите конец строки $.Обратите внимание, что вам не нужна группа захвата вокруг класса символов:

[_+!@#$?^]+$

Например:

import re
strings = ['string01_','str_ing02_^','string03_@_', 'string04_1', 'string05_a_']

for item in strings:
  clean_this = (re.sub(r'[_+!@#$?^]+$', '', item))
  print (clean_this)

См. Демонстрационную версию Regex | Python demo

Если вы также хотите удалить пробельные символы в конце, вы можете добавить \s к классу символов:

[_+!@#$?^\s]+$

Regex demo

0 голосов
/ 18 декабря 2018

Вам нужен якорь в конце слова $

 clean_this = (re.sub(r'[_+!@#$?^]+$', '', item))

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...