Używam poniższych w odniesieniu do liter z dowolnego języka:

text = regex.sub("[^\p{alpha}\d]+"," ",text

Czy mogę użyć p{alpha}, aby przekonwertować litery do ich dolnej równoważnej, jeśli taka równoważność istnieje? Jak wyglądałby ten regex?

7
Baz 28 wrzesień 2011, 23:33

4 odpowiedzi

Najlepsza odpowiedź

Jak sugerował OxTopus, możesz po prostu konwertować litery do ich małej wersji z text.lower() (nie ma potrzeby wyrażenia regularnego). Działa to również ze strunami Unicode (À - à à itd.)

6
Eric O Lebigot 29 wrzesień 2011, 07:09
>>> re.sub('[AEIOU]+', lambda m: m.group(0).lower(), 'SOME TEXT HERE')
'SoMe TeXT HeRe'
37
Steven Rumbalski 28 wrzesień 2011, 20:06

Wierzę, że możesz znaleźć swoją odpowiedź tutaj: http://docs.Python.org/ biblioteka / re.html # re.sub

Możesz podać funkcję Torower, która wykonuje obiekt dopasowywania do metody podrzędnej, która zwróci ciąg wymiany

3
minus 28 wrzesień 2011, 19:58

Możesz zmienić re.findall("([A-Z]+)", text), aby użyć tego, jakiego potrzebujesz regex. To po prostu przejdzie przez mecze i zastąp każdy mecz z jego małą odpowiednikiem:

text = 'ABCDEF_ghjiklm_OPQRSTUVWXYZ'
for f in re.findall("([A-Z]+)", text):
    text = text.replace(f, f.lower())
print text

Wynik to:

abcdef_ghjiklm_opqrstuvwxyz
1
chown 28 wrzesień 2011, 20:01