Изменить только один столбец-разделитель PYTHON - PullRequest
0 голосов
/ 06 марта 2019

a = ['0, Италия, "Ароматы включают в себя тропические фрукты, метлу, серу и сушеную траву. Вкус не слишком выразительный, предлагая незрелый яблочный, цитрусовый и сушеный шалфей наряду с оживленной кислотностью." , Vulkà Bianco, 87,, Сицилия и Сардиния, Этна, Kerin O'Keefe, @ kerinokeefe, Никосия, 2013 Vulkà Bianco (Этна), White Blend, Никосия ']

У меня есть этосписок, и я хочу изменить ТОЛЬКО разделитель жирной строки, например, с "," на "#".

1 Ответ

1 голос
/ 06 марта 2019

Это дает вам то, что вы хотите, учитывая ввод:

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

Но что-то подсказывает мне, что это не слишком полезно / общее.

Но в любом случае решение проблемы такого рода, вероятно, будетзадействуйте эти два метода строки / списка: split и replace

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

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

update

Так что если вам нужночтобы использовать 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 отобразит функцию на каждую строку в СДР, а лямбда, которую принимает map, возвращает новую строку.Итак, здесь я отображаю эту замещающую цепочку команд для каждой строки в СДР (а затем в примере я take один)

...