Как написать функцию которая нормализует строку убирая все дополнительные символы возле слов?
Необходимо написать функцию normalize(), которая нормализует строку, убрав все дополнительные символы возле слов (см. примеры).
Пример:
normalize("X > %Y")
>>"X > Y"
normalize(" X > Y >")
>>"X > Y"
normalize("\"X\" >'Y'> I \t> 1Z2")
>>"X > Y > I > 1Z2"
Дополнительные символы:
!"$%&\'*+,-./:;<=?[\\]^`{|}~\t\n\x0b\x0c\r
Ответы (2 шт):
Автор решения: tratatarus
→ Ссылка
Как вариант:
def normalize(text):
output = ''
for i in text:
if i in ["!", '"', "$", "%", "&", "'", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", "?", "[", "]", "^", "`", "{", "|", "}", "~", "\t", "\n", "\x0b", "\\x0c", "\r"]:
continue
output += i
return output
if __name__ == '__main__':
print(normalize("X > %Y"))
Автор решения: MaxU
→ Ссылка
import re
chars2drop = "!\"$%&'*+,-./:;<=?[\]^`{|}~\t\n\x0b\x0c\r"
def normalize(s, chars2drop=chars2drop):
trans_tab = str.maketrans(dict.fromkeys(list(chars2drop), " "))
res = " ".join((s.translate(trans_tab).split()))
res = re.sub("\s*>\s*$", "", res)
return res
тесты:
In [70]: normalize("X > %Y")
Out[70]: 'X > Y'
In [71]: normalize(" X > Y >")
Out[71]: 'X > Y'
In [72]: normalize("\"X\" >'Y'> I \t> 1Z2")
Out[72]: 'X > Y > I > 1Z2'