Как удалить ненужный символ из строки в python не используя replace - используя регулярное выражение

Вот задание: Создайте функцию, которая дает строку, сохраняет только буквы A-Z (верхний и нижний регистр), 0-9 цифр и символы пробелов.Кроме того, возвращает "не строку!"Если тип записи не является строкой. Я создал такую функцию - она прошла все тесты

Вот тестовые строки
'\x0c3U\x0c P \' /j<c\t M+# ~ \x0bh ^m ?g?-\t#-t +m"0\x0cjvk Ez'
'><#qY= / YbxSltf? GIi(+dl\r .?%E4\r?2\r D'
'r%Q 0 \x0cIYpK IssqER%. ;<*/\x0c9l bC8\'[:\x0b|Z EX!R{" BWP(xTn [B >'

import re
def nothing_special(st):
    if not isinstance(st, str):
        return "Not a string!"
    pattern = r'[A-Za-z0-9 /\n/\t/\r/\x0b/\x0c]'
    st = st.replace('/', '')
    match = re.findall(pattern, re.escape(st))
    if match:
        res = ''.join(match)
        return res
    return ''

Не получается из созданного регулярного выражения УБИРАТЬ "слеш"

Пришлось применить st = st.replace('/', '') Подскажите как это сделать в регулярном выражении! И можно ли за раз в регулярке убрать такие символы как:

/ просто "слеш"
/\n/\t/\r/\x0b/\x0c  - без экранирования
перенос строки
вертикаль. табуляцию
каретку
нечитаемые символы

Ответы (1 шт):

Автор решения: Алексей Р

Здесь лучше использовать re.sub() и удалить (заменить на пустую строку) символы, не являющиеся A-Z (верхний и нижний регистр), 0-9 цифр и символы пробелов.

import re


def nothing_special(st):
    if not isinstance(st, str):
        return "Not a string!"
    return re.sub(r'[^A-Za-z\d ]', '', st)


for test in '\x0c3U\x0c P \' /j<c\t M+# ~ \x0bh ^m ?g?-\t#-t +m"0\x0cjvk Ez', '><#qY= / YbxSltf? GIi(+dl\r .?%E4\r?2\r D', 'r%Q 0 \x0cIYpK IssqER%. ;<*/\x0c9l bC8\'[:\x0b|Z EX!R{" BWP(xTn [B >', 10:
    print(f'Исходная: {repr(test)}, после обработки: {nothing_special(test)}')
Исходная: '\x0c3U\x0c P \' /j<c\t M+# ~ \x0bh ^m ?g?-\t#-t +m"0\x0cjvk Ez', после обработки: 3U P  jc M  h m gt m0jvk Ez
Исходная: '><#qY= / YbxSltf? GIi(+dl\r .?%E4\r?2\r D', после обработки: qY  YbxSltf GIidl E42 D
Исходная: 'r%Q 0 \x0cIYpK IssqER%. ;<*/\x0c9l bC8\'[:\x0b|Z EX!R{" BWP(xTn [B >', после обработки: rQ 0 IYpK IssqER 9l bC8Z EXR BWPxTn B 
Исходная: 10, после обработки: Not a string!
→ Ссылка