Estoy escribiendo un programa de recuento de palabras en Python MapReduce. El problema es que hay muchos caracteres no alfabéticos esparcidos en los datos, he encontrado esta publicación Eliminando todo menos caracteres alfanuméricos de una cadena en Python que muestra una buena solución usando expresiones regulares, pero no estoy seguro de cómo implementarlo
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
Me temo que no estoy seguro de cómo usar la biblioteca re
o incluso la expresión regular para el caso. No estoy seguro de cómo aplicar el patrón de expresiones regulares a la cadena entrante (línea de un libro) v
correctamente para recuperar la nueva línea sin caracteres no alfanuméricos.
Sugerencias
v
es una línea completa de un libro (específicamente Moby Dick), voy palabra por palabra, no char por char. Así que algunas palabras pueden tener un "," al final, así que "indignidad" no se corresponde con "indignidad".