Преобразование файла CSV с разделителями в файл JSON в определенном формате - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь преобразовать из файла CSV каждую строку в формат JSON.

Когда я конвертирую его в JSON, он включает квадратные скобки в начале и конце, как его можно опустить ?.Также я ищу способ разделить значения по конвейеру в список отдельных хобби.

Вот что я получаю в качестве вывода:

[
  {
    "Name": "John",
    "Age": "23",
    "Hobby": "Kayaking|Football",
    "Location": "Miami",
    "Profession": "Sales",
  },
  {
    "Name": "Peter",
    "Age": "35",
    "Hobby": "Football|Basketball|Swimming",
    "Location": "Turin",
    "Profession": "Mechanic",
  },
  {
    "Name": "James",
    "Age": "50",
    "Hobby": "Golf",
    "Location": "Berlin",
    "Profession": "Accountant",
  }
]

Мой желаемый вывод

  {
    "Name": "John",
    "Age": "23",
    "Hobby": ["Kayaking","Football"],
    "Location": "Miami",
    "Profession": "Sales",
  },
  {
    "Name": "Peter",
    "Age": "35",
    "Hobby": ["Football","Basketball","Swimming"],
    "Location": "Turin",
    "Profession": "Mechanic",
  },
  {
    "Name": "James",
    "Age": "50",
    "Hobby": "Golf",
    "Location": "Berlin",
    "Profession": "Accountant",
  }

Мой код:

import glob
import os
import csv
import json


if __name__ == '__main__':
    csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE)
    for filename in glob.glob('path_to_csv\file.csv'):
        csvfile = os.path.splitext(filename)[0]
        jsonfile = 'jsfile.json'
        fieldnames = ("Name","Age","Hobby","Location", "Profession")
    with open(csvfile+'.csv') as f:
        reader = csv.DictReader(f,fieldnames)#, dialect='piper')
        rows = list(reader)


    with open(jsonfile, 'w') as f:
        json.dump(rows, f, sort_keys=True, indent=2, separators=(',', ': '))
        f.write('\n')

1 Ответ

0 голосов
/ 14 октября 2018

rows = list(reader)

Нет необходимости заключать его в список, поскольку он уже является списком.Удаление этой строки исправит скобки.

for row in reader:
   row['Hobby'] = list(row['Hobby'].split('|'))

Нам нужно разбить строку хобби и преобразовать их в список

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