仅更改一列定界符PYTHON

时间:2019-03-06 13:34:12

标签: python python-3.x hive pyspark rdd

  

a = ['0,意大利,”香气包括热带水果,扫帚,硫磺和干药草。味觉过高,提供未成熟的苹果,柑桔和干鼠尾草,并带有轻快的酸度。” ,VulkàBianco,87,,Sicily&Sardinia,Etna ,, Kerin O'Keefe,@ kerinokeefe,Nicosia 2013VulkàBianco(Etna),White Blend,尼科西亚']

我有此列表,我只想将粗体字符串分隔符从“,”更改为“#”。

1 个答案:

答案 0 :(得分:1)

这将为您提供所需的输入:

a[0].split('"')[1].replace(",", "#")

但是有些东西告诉我,这不太有用/一般。

但是无论如何,解决此类问题的方法可能涉及以下两个字符串/列表方法:splitreplace

https://docs.python.org/3/library/stdtypes.html#str.split

https://docs.python.org/3/library/stdtypes.html#str.replace

更新

因此,如果您需要使用Spark RDD,则可以先使用字符串列表(尚不支持csv)创建RDD

>>> rdd = sc.parallelize(a)
>>> rdd.take(1)
['0,Italy,"Aromas include tropical fruit, broom, brimstone and dried herb. The palate isnt overly expressive, offering unripened apple, citrus and dried sage alongside brisk acidity.",Vulk\xc3\xa0 Bianco,87,,Sicily & Sardinia,Etna,,Kerin O\xe2\x80\x99Keefe,@kerinokeefe,Nicosia 2013 Vulk\xc3\xa0 Bianco (Etna),White Blend,Nicosia']
>>> processed_rdd = rdd.map(lambda row: row.split('"')[0] + row.split('"')[1].replace(",", "#") + row.split('"')[2])
>>> processed_rdd.take(1)
['0,Italy,Aromas include tropical fruit# broom# brimstone and dried herb. The palate isnt overly expressive# offering unripened apple# citrus and dried sage alongside brisk acidity.,Vulk\xc3\xa0 Bianco,87,,Sicily & Sardinia,Etna,,Kerin O\xe2\x80\x99Keefe,@kerinokeefe,Nicosia 2013 Vulk\xc3\xa0 Bianco (Etna),White Blend,Nicosia']

我正在做几个假设,因为您仅提供了一个示例行。

这些假设是关于是否存在用双引号引起来的字符串" ",这是需要替换逗号的列。

此外,我假设其他任何列中都没有"

我还假设此列在处理后不需要其中的"

解释

rdd方法map将函数映射到RDD中的每一行,而map所使用的lambda返回新行。所以在这里,我将这条替换的命令链映射到RDD中的每一行(然后在示例中,我take一个)