Конвертировать CSV в JSON-файл в Python - PullRequest
0 голосов
/ 13 мая 2019

CSV File Выше CSV-файл, который содержит около 2000 строк.

Я хочу построчно проанализировать файл CSV, преобразовать его в JSON и отправить через websocket.

Я нашел в сети код, который конвертирует CSV в JSON следующим образом:

import csv
import json

csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')

fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
    json.dump(row, jsonfile)
    jsonfile.write('\n')

Но проблема с приведенным выше кодом заключается в том, что нам нужно упомянуть имена полей для разбора CSV. Поскольку у меня более 2000 строк, это неосуществимое решение.

Может кто-нибудь предложить, как построчно анализировать CSV-файл и преобразовывать его в JSON без указания имен полей?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Предполагая, что у вашего CSV есть строка заголовка: просто удалите аргумент fieldnames из DictReader

Если параметр fieldnames пропущен, значения в первой строке файла f будут использоваться как имена полей,в https://docs.python.org/2/library/csv.html

import csv
import json

csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')


reader = csv.DictReader(csvfile)
for row in reader:
    json.dump(row, jsonfile)
    jsonfile.write('\n')
0 голосов
/ 13 мая 2019

Если вы довольны решением, которое у вас есть, и единственное, что вас беспокоит, это как войти в «длинный» список заголовков столбцов, я предлагаю вам прочитать первую (заголовочную) строку CSV, используя что-то вроде читателя .next (),

import csv

with open('your_CSV.csv') as csvFile:
    reader = csv.reader(csvFile)
    field_names_list = reader.next()

, а затем разбить полученную строку на список, используя str.split(',').

Список, который вы получите, может быть передан на

fieldnames = (---from the above code block ---)

строка вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...