我试图使用以下代码清除列表中的单词:
#define function to clean list of words
def clear_list(words_list):
regex = re.compile('[\w\d]{2,}', re.U)
filtered = [i for i in words_list if regex.match(i)]
return filtered
clear_list_udf = sf.udf(clear_list, ArrayType(StringType()))
items = items.withColumn("clear_words", clear_list_udf(sf.col("words")))
我只需要大于1个字母的单词,不需要标点符号。但我在以下情况下遇到了问题:
我拥有的:
[“魔术师,魔术师”,魔术师,魔术师,魔术师]->
[ззззззззззззззззз
我需要什么:
[“ззззззззззззззззззззз1079
[10、10、10、10、10、10、10、10]
您可以使用regexp_replace,然后在df上进行过滤,以在pyspark中实现结果
我们应该尽量避免使用UDF,因为UDF就像一个黑匣子。它不能有效地对其应用优化Read more here
替换此行:
这一行:
给定的正则表达式很好,但是for循环返回原始值,而不是匹配的字符串。 代码示例:
相关问题 更多 >
编程相关推荐