Игнорировать специальные символы из списка, исключая упомянутые символы - PullRequest
1 голос
/ 21 марта 2019

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

Код, который я сейчас использую для удаления специальных символов:

final_list=[re.sub('[^a-zA-Z0-9]+', '', _)for _ in a]

Это прекрасно работает, когдаЯ хочу удалить все специальные символы в моем списке.

Ввод:

["on@3", "two#", "thre%e"]

Вывод:

['on3', 'two', 'three']

Но что я ожидаю, если я дам игнорировать специальныесимволы, кроме $#%

Ввод:

["on@3", "two#", "thre%e"]

вывод:

['on3', 'two#', 'thre%e']

Это мой ожидаемый вывод

$#% только для примера.Пользователь может упомянуть любой специальный символ, и мне нужен код, чтобы не удалять специальный символ, упомянутый пользователем, а удалить все другие специальные символы.

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Добавьте эти символы в регулярное выражение как

[re.sub('[^a-zA-Z0-9<b>$#%</b>]+', '', _)for _ in a]
                    <b>^^^</b>

, как упомянуто @DYZ, вы также можете использовать '[^\w$#%]+' регулярное выражение

[re.sub('[^\w$#%]+', '', _)for _ in a]

ОБНОВЛЕНИЕ-1

import re
a = ["on@3", "two#", "thre%e"]
<b>special_char_to_be_removed = "%" # here you can change the values
regex = '[^\w{your_regex}]+'.format(your_regex=special_char_to_be_removed)
[re.sub(regex, '', _)for _ in a]</b>
0 голосов
/ 21 марта 2019

Просто добавьте список символов в список.

import re

a = ["on@3", "two$", "thre%e"]

final_list = [re.sub('[^a-zA-Z0-9\$#%]+', '', _) for _ in a]

print final_list

output

['on3', 'two$', 'thre%e']

$ имеет значение в регулярных выражениях, поэтому вам нужно экранировать его с помощью \

Если вы хотите использовать пользовательский ввод, просто используйте

import re

a = ["on@3", "two$", "thre%e"]

except_special_chars = input('Exceptions:')

final_list = [re.sub('[^a-zA-Z0-9'+str(except_special_chars)+']+', '', _) for _ in a]

print final_list

, затем пользователь вводит специальные символы между кавычками ' и с экранированием \, если необходимо.

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