Pyspark, как убрать знаки препинания и сделать строчные буквы в Rdd? - PullRequest
0 голосов
/ 09 ноября 2018

Я хотел бы удалить знак препинания и сделать строчные буквы в СДР?Ниже приведен мой набор данных

 l=sc.parallelize(["How are you","Hello\ then% you"\
,"I think he's fine+ COMING"])

Я попробовал функцию ниже, но получил сообщение об ошибке

punc='!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

def lower_clean_str(x):
    lowercased_str = x.lower()
    clean_str = lowercased_str.translate(punc) 
    return clean_str

one_RDD = l.flatMap(lambda x: lower_clean_str(x).split())
one_RDD.collect()

Но это дает мне ошибку.В чем может быть проблема?Как я могу это исправить?Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы неправильно используете функцию перевода Python. Поскольку я не уверен, используете ли вы python 2.7 или python 3, я предлагаю альтернативный подход.

Функция перевода немного изменяется в Python 3.

Следующий код будет работать независимо от версии Python.

def lower_clean_str(x):
  punc='!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  lowercased_str = x.lower()
  for ch in punc:
    lowercased_str = lowercased_str.replace(ch, '')
  return lowercased_str

l=sc.parallelize(["How are you","Hello\ then% you","I think he's fine+ COMING"])
one_RDD = l.map(lower_clean_str)
one_RDD.collect()

Выход:

[«Как дела?», «Привет!

...