TLDR: Как я могу загрузить json.load с пользовательским разделителем, не заменяя разделитель запятой?
У меня есть искровой фрейм данных, который я хочу записать в CSV, и для этого мне нужно jsonize каждой строки в нем.
Итак, у меня есть следующий ряд pyspark:
Row(type='le', v=Row(occ=False, oov=False, v=True), x=966, y=340)
Я хочу подготовить ряд к CSV. Если я напишу в CSV с обычным json.dumps, я получу строку со многими запятыми, тогда метод read csv не читает файл (намного больше запятых)
Итак, я выполняю json.dumps сseparators = ("|", ":")), и я получаю строку s:
'["le"| [false| false| true]| 966| 340]'
Теперь я могу сделать:
json.loads(s.replace('|',','))
И я получаюжелаемый вывод:
['le', [False, False, True], 966, 340]
Теперь проблемная часть:
Я пишу его в CSV. Когда я читаю его, прежде чем пытаться загрузить json.loads, я получаю:
'[\\le\\"| [false| false| true]| 966| 340]"'
Требуемый вывод такой же, как и раньше:
['le', [False, False, True], 966, 340]
Но я не могу этого достичь.
Когда я пытаюсь сделать json.loads, я получаю:
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
Когда я пытаюсь изменить '|'to ',':
s = s.replace('|',',')
s
Out: '[\\left_ear\\", [false, false, true], 966, 340]"'
json.loads(s)
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
Этот пост является попыткой преодолеть предыдущую проблему, на которую я не нашел ответа: Преобразование нескольких столбцов массива структур в pyspark sql
Если я найду решение этой проблемы, оно мне поможет.
В итоге это строка, которую мне нужно проанализировать:
'[\\le\\"| [false| false| true]| 966| 340]"'
Как я могу это сделать?