Piszę program do liczenia słów MapReduce w języku python. Problem polega na tym, że w danych jest wiele znaków innych niż alfabet, znalazłem ten post Usuwanie wszystkiego oprócz znaków alfanumerycznych z łańcucha w Pythonie, który pokazuje ładne rozwiązanie za pomocą wyrażenia regularnego, ale nie jestem pewien, jak to zaimplementować
def mapfn(k, v):
print v
import re, string
pattern = re.compile('[\W_]+')
v = pattern.match(v)
print v
for w in v.split():
yield w, 1
Obawiam się, że nie jestem pewien, jak używać biblioteki, re
a nawet wyrażenia regularnego w tym celu. Nie jestem pewien, jak v
poprawnie zastosować wzorzec wyrażenia regularnego do przychodzącego ciągu (wiersza książki), aby pobrać nowy wiersz bez żadnych znaków niealfanumerycznych.
Propozycje?
v
to cała linia książki (szczególnie moby dick), idę słowo po słowie, a nie znak po znaku. Dlatego niektóre słowa mogą mieć na końcu „,”, więc „zniewaga” nie pokrywa się z „zniewagą”.