сохранить строку JSON в CSV-файле для импорта neo4j - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужно сохранить строку JSON в одном из полей файла csv, который будет использоваться для создания базы данных neo4j с neo4j-admin import.После того, как я сгенерировал все необходимые csv файлы и попытался создать базу данных, он пишет, что нет действительных --nodes файлов.Я подозреваю, что это проблема цитирования конкретно в csv с JSON сохраненными строками.Вот код, который я использую для генерации csv файлов:

with open(cl_file,'w') as csvfile:
        writer = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_ALL)
        writer.writerow(title_list)
        for row in unique_cl_data:
            writer.writerow([row[0], row[1], row[2], row[3], 'Cluster', dataset_name])

Строка JSON хранится в значении row[3] и выглядит следующим образом:

'{"mature_neuron":0.493694929,"intermediate_progenitor_cell":0.0982259823,"immature_neuron":0.1773570713,"glutamatergic_neuron":0.6074802751,"gabaergic_neuron":0.2685863644,"dopaminergic_neuron":0.0234599396,"serotonergic_neruon":0.001022236,"cholinergic_neuron":0.0273108961,"neuroepithelial_cell":0.2173953827,"radial_glia":0.2758471756,"microglia":0.0282818013,"macrophage":0.0,"astrocyte":0.3250249223,"oligodendrocyte_precursor_cell":0.4788073089,"mature_oligodendrocyte":0.3684283806,"schwann_cell_precursor":0.2158159088,"myelinating_schwann_cell":0.3282158992,"nonmyelinating_schwann_cell":0.4526564331,"endothelial_cell":0.7830818309,"mural_cell":0.0756233339}'

Сгенерированный csv выглядит так:

"clusterId:ID","chartType","clusterName","assign",":LABEL","DATASET"
"scid_engram_fear_traned_tsne_1","tsne","1","{""mature_neuron"":0.793159869,""intermediate_progenitor_cell"":0.000454013,""immature_neuron"":0.0548508584,""glutamatergic_neuron"":1.0792403847,""gabaergic_neuron"":0.3181778459,""dopaminergic_neuron"":0.150589103,""serotonergic_neruon"":0.0096765336,""cholinergic_neuron"":0.0251700647,""neuroepithelial_cell"":0.0594110346,""radial_glia"":0.1539441058,""microglia"":0.0224593362,""macrophage"":0.0300658893,""astrocyte"":0.0996221719,""oligodendrocyte_precursor_cell"":0.0051255739,""mature_oligodendrocyte"":0.0223153229,""schwann_cell_precursor"":0.029507684,""myelinating_schwann_cell"":0.0360644031,""nonmyelinating_schwann_cell"":0.4626932582,""endothelial_cell"":0.0006433937,""mural_cell"":0.0}","Cluster","scid_engram_fear_traned"

Как можно видеть, двойные кавычки вокруг клавиш строки JSON.Я подозреваю, что это проблема, но я не уверен.Я не знаю, как избежать такой цитаты, если она является причиной неудачного импорта.csv.QUOTE_ALL всегда работал для меня (до того, как я попытался сохранить строку JSON).

1 Ответ

0 голосов
/ 16 февраля 2019

В итоге я просто заменил некоторые символы в row[3], которые работали нормально (то же самое QUOTE_ALL), используя:

row[3].replace('"', '\\"').replace('\n', '\\n')

При чтении в полях на переднем конце мне нужно было заменить символы обратно:

JSON.parse(jsonStr.replace(/\\"/g, '"'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...