【问题标题】:Change only one column delimiter PYTHON仅更改一列分隔符 PYTHON
【发布时间】:2019-07-28 04:38:45
【问题描述】:

a = ['0,Italy,“香气包括热带水果、扫帚、硫磺和干草本植物。口感并不过分,带有未成熟的苹果、柑橘和干鼠尾草以及清爽的酸度。” ,Vulkà Bianco,87,,Sicily & Sardinia,Etna,,Kerin O'Keefe,@kerinokeefe,Nicosia 2013 Vulkà Bianco (Etna),White Blend,Nicosia']

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

【问题讨论】:

  • 你的输出应该是什么?
  • 你用pyspark和rdd标记这个有什么原因吗?
  • 基本上我有一个 CSV 文件,然后我必须在 HDFS 中创建一个 HIVE 表。但是因为DESCRIPTION里面有逗号,所以分隔符把一切都搞砸了。所以一位同事告诉我我需要在 Python 中更改它,使用 RDD 的
  • 如果你能举一个这样的RDD的例子会很有帮助(你可以在pyspark shell中使用spark上下文创建一个几行,我可以更新我的答案有一些更好的例子

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


【解决方案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,你可以先使用字符串列表创建 RDD(还不是 csv)

>>> 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 一个)

【讨论】:

  • 这只是 CSV 文件中 50 行中的一行。我只是需要一些关于如何做的想法,所以我可以将它复制到文件的其余部分。感谢您的帮助!
  • 我希望这是一个更好的解决方案 :),我已经用一些 spark 示例对其进行了更新
猜你喜欢
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多