Mam ciąg znaków, który rodzaj wygląda następująco:zawaleniem spacje w ciągu znaków
"stuff . // : /// more-stuff .. .. ...$%$% stuff -> DD"
i chcę zdejmować wszystkie znaki interpunkcyjne, zrobić wszystko wielkie i zwinąć wszystkie białe znaki tak, że wygląda tak:
"STUFF MORE STUFF STUFF DD"
Czy jest to możliwe z jednym wyrażeniem regularnym lub czy muszę połączyć więcej niż dwa? Oto, co mam do tej pory:
def normalize(string):
import re
string = string.upper()
rex = re.compile(r'\W')
rex_s = re.compile(r'\s{2,}')
result = rex.sub(' ', string) # this produces a string with tons of whitespace padding
result = rex.sub('', result) # this reduces all those spaces
return result
Jedyne, co nie działa, to zawalenie białych znaków. Jakieś pomysły?
Zgadzam się, że z pewnością byłby to prostszy sposób podejścia do problemu. – Amber
Zakładam, że powinno to być "string", a nie "result" w argumencie rex.sub? Czy to tylko zastępuje część kodu użytkownika? –
@ Brooks, masz rację - jestem tak niechętny wbudowanym shadowingom i standardowym nazwom modułów, że cokolwiek BUT string wyleciało mi z palców. Pozwól mi edytować, aby naprawić i dzięki! –