a=['0,意大利,”香味包括热带水果、金雀花、硫磺和干草。口感不太富于表现力,有未成熟的苹果、柑橘和干鼠尾草,还有清爽的酸度à 比安科,87岁,西西里岛和撒丁岛,埃特纳,科林o'keefe,@kerinokeefe,尼科西亚2013 vulkà 比安科(etna),白色混合,尼科西亚']我有这个列表,我只想将粗体字符串分隔符从“,”改为“#”。
3hvapo4f1#
这会得到所需的输入:
a[0].split('"')[1].replace(",", "#")
但有些东西告诉我这不是很有用/一般。但无论如何,这类问题的解决方案可能涉及以下两种字符串/列表方法: split 以及 replace https://docs.python.org/3/library/stdtypes.html#str.splithttps://docs.python.org/3/library/stdtypes.html#str.replace
split
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 将函数Map到rdd中的每一行,以及 map 获取并返回新行。所以在这里,我将这个替换的命令链Map到rdd中的每一行(然后在示例中,我 take 一个)
rdd
map
take
1条答案
按热度按时间3hvapo4f1#
这会得到所需的输入:
但有些东西告诉我这不是很有用/一般。
但无论如何,这类问题的解决方案可能涉及以下两种字符串/列表方法:
split
以及replace
https://docs.python.org/3/library/stdtypes.html#str.splithttps://docs.python.org/3/library/stdtypes.html#str.replace
更新
因此,如果需要使用spark rdd,可以首先使用字符串列表(还不是csv)创建rdd
我做了几个假设,因为您只提供了一个示例行。
这些假设是关于这个双引号字符串的存在
" "
,这是需要替换的带逗号的列。而且,我假设没有
"
在其他任何一列中。我也假设这个专栏不需要这些
"
在它被处理之后。解释
这个
rdd
方法map
将函数Map到rdd中的每一行,以及map
获取并返回新行。所以在这里,我将这个替换的命令链Map到rdd中的每一行(然后在示例中,我take
一个)