Python: удалить символ [] и добавить новые строки - PullRequest
0 голосов
/ 15 мая 2018

Я могу успешно конвертировать CSV в JSON. Я также пытаюсь загрузить данные в ElasticSearch, чтобы формат немного отличался, поэтому мне нужно преобразовать их в другой тип формата json.

  1. Итак, я пытаюсь удалить начальные и конечные '[' и ']' из файла json.
  2. Также я пытаюсь вставить '{"index": {}}' для каждой новой строки строки данных.
  3. создать новую строку, например, симпатичный принт

Данные:

id,team_name,team_members
123,"Biology, Neurobiology ","Ali Smith, Jon Doe"
234,Mathematics,Jane Smith 
345,"Statistics, Probability","Matt P, Albert Shaw"
456,Chemistry,"Andrew M, Matt Shaw, Ali Smith"
678,Physics,"Joe Doe, Jane Smith, Ali Smith "

Код:

import csv
import sys
import json

#EDIT THIS LIST WITH YOUR REQUIRED JSON KEY NAMES
fieldnames=["id","team_name","team_members"]

def convert(filename):
 csv_filename = filename[0]
 print "Opening CSV file: ",csv_filename
 f=open(csv_filename, 'r')
 next(f) #skip the headers
 csv_reader = csv.DictReader(f,fieldnames)
 json_filename = csv_filename.split(".")[0]+".json"
 print "Saving JSON to file: ",json_filename
 jsonf = open(json_filename,'w')
 data = json.dumps([r for r in csv_reader])
 jsonf.write(data)
 f.close()
 jsonf.close()

if __name__=="__main__":
 convert(sys.argv[1:])

 # How to run?: python csvtojsonfile.py myCSVfile.csv

Токовый выход:

[{"team_name": "Biology, Neurobiology ", "team_members": "Ali Smith, Jon Doe", "id": "123"}, {"team_name": "Mathematics", "team_members": "Jane Smith ", "id": "234"}, {"team_name": "Statistics, Probability", "team_members": "Matt P, Albert Shaw", "id": "345"}, {"team_name": "Chemistry", "team_members": "Andrew M, Matt Shaw, Ali Smith", "id": "456"}, {"team_name": "Physics", "team_members": "Joe Doe, Jane Smith, Ali Smith ", "id": "678"}]

Требуется окончательный вывод:

{"index" : {}}
{"team_name": "Biology, Neurobiology ", "team_members": "Ali Smith, Jon Doe", "id": "123"}
{"index" : {}}
{"team_name": "Mathematics", "team_members": "Jane Smith ", "id": "234"}
{"index" : {}}
{"team_name": "Statistics, Probability", "team_members": "Matt P, Albert Shaw", "id": "345"}
{"index" : {}}
{"team_name": "Chemistry", "team_members": "Andrew M, Matt Shaw, Ali Smith", "id": "456"}
{"index" : {}}
{"team_name": "Physics", "team_members": "Joe Doe, Jane Smith, Ali Smith ", "id": "678"}

Примечание: я удалил запятую, создал '{"index": {}}' и создал новую строку. Я ценю помощь!

1 Ответ

0 голосов
/ 15 мая 2018

если вы хотите напечатать его таким образом, вы можете перебрать список таким образом

for i in data:
    print("index {}")
    print(i)

Если вы хотите, чтобы это выглядело так, как в файле, вы можете использовать аргументы dumps для изменения внешнего вида, вы не можете удалить "[]".

json.dump(jsonf, [r for r in csv_reader], indent=2)# this will output to a file, you don't need a .write()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...