我使用正则表达式来按照以下方式操作西班牙语文本中的重音元音和“ñ”:
WORD_REGEXP = re.compile(r"[a-zA-Záéíóúñ]+")
虽然它可以与任何字符串一起使用,但是当我执行map reduce程序时,它不会使用像“acción”这样的重音操作正确的西班牙语单词,并且在结果文件中出现单词。有像
这样的行acci: 6
instead of:
acción: 6
这是python代码。有什么建议?谢谢。
# -*- coding: utf-8 -*-
from mrjob.job import MRJob
import re
WORD_REGEXP = re.compile(r"[a-zA-Záéíóúñ]+")
class MRWordFrequencyCount(MRJob):
def mapper(self, _, line):
words = WORD_REGEXP.findall(line)
for word in words:
yield word.lower(), 1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
MRWordFrequencyCount.run()
答案 0 :(得分:0)
这似乎是编码问题。
documentation建议使用BytesValueProtocol 强迫编码。
class MREncodingEnforcer(MRJob):
INPUT_PROTOCOL = BytesValueProtocol
def mapper(self, _, value):
value = value.decode('utf_8')
...