Pyspark如何删除标点符号并在Rdd中生成小写字母?

Pyspark如何删除标点符号并在Rdd中生成小写字母?,pyspark,lowercase,punctuation,Pyspark,Lowercase,Punctuation,我想删除标点符号并在RDD中使用小写字母? 下面是我的数据集 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() cl

我想删除标点符号并在RDD中使用小写字母? 下面是我的数据集

 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()
punc=”!"#$%&\'()*+,-./:;?@[\\]^_`{|}~'
def下_清洁_str(x):
小写的_str=x.lower()
clean_str=小写的_str.translate(punc)
返回干净的街道
one_RDD=l.flatMap(lambda x:lower_clean_str(x).split())
一次收集()
但这给了我一个错误。可能是什么问题?我如何解决这个问题?
谢谢。

您以错误的方式使用python translate函数。 由于我不确定您使用的是Python2.7还是Python3,因此我建议使用另一种方法

在Python3中,translate函数发生了一些变化

无论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()
def下部清洁结构(x):
punc='!“#$%&\'()*+,-./:@[\\]^_`{|}~'
小写的_str=x.lower()
对于CHIN punc:
小写字母=小写字母替换(ch,“”)
返回小写的
l=sc.parallelize([“你好吗”,“你好\那么%you”,“我想他很好+来了])
一个RDD=l.map(下部清洁)
一次收集()
输出:

[“你好”,“你好,那么你呢”,“我想他会好起来的”]


@欢迎来到stackoverflow。在这里,你可以接受答案,如果它对你有效,那么其他偶然发现这个问题的人可以理解这个解决方案是否有效