如何使用 pyspark 替换 RDD 中的字符?

问题描述

我和 RDD 看起来像这样:

[['M5126','M5416','Z4789','Z01810','S060X6D','S9032XA','S96912A','S72002A','S61411A','W268XXA','Y9269','Z23'],['S62639B','M25512','M1712','M25612','M62512','S39012D','S39012A','M25511','Z98890','11','29','Z5189']]

如何将逗号替换为波浪号,使我的 RDD 看起来像这样:

['M51~ M541~ Z4789~ Z01810~ S060X6D~ S9032XA~ S96912~ S72002A~ S61411A~ W268XXA~ Y9269~ Z23~S62639B~ M25512~ M1712~ M25612~ M62512~ S39012D~ S39012A~ M25511~ Z98890~ 11~ 29~ Z5189']

rdd = rdd.map(lambda row: "~".join([str(cd) for cd in row])).reduce(lambda x,y: "~".join([x,y]))

但它使它成为一个长字符串。

解决方法

只需在连接字符串中添加一个空格...?

result = [rdd.map(lambda row: "~ ".join([str(cd) for cd in row])).reduce(lambda x,y: "~ ".join([x,y]))]

给出

['M5126~ M5416~ Z4789~ Z01810~ S060X6D~ S9032XA~ S96912A~ S72002A~ S61411A~ W268XXA~ Y9269~ Z23~ S62639B~ M25512~ M1712~ M25612~ M62512~ S39012D~ S39012A~ M25511~ Z98890~ 11~ 29~ Z5189']