Đây là mã của tôi, những thứ thực sự đơn giản ...
import csv
import json
csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
out = json.dumps( [ row for row in reader ] )
jsonfile.write(out)
Khai báo một số tên trường, trình đọc sử dụng CSV để đọc tệp và các tên đã phân loại để kết xuất tệp sang định dạng JSON. Đây là vấn đề ...
Mỗi bản ghi trong tệp CSV nằm trên một hàng khác nhau. Tôi muốn đầu ra JSON giống như vậy. Vấn đề là nó dồn tất cả vào một hàng dài, khổng lồ.
Tôi đã thử sử dụng một cái gì đó như for line in csvfile:
và sau đó chạy mã của tôi bên dưới reader = csv.DictReader( line, fieldnames)
mà lặp lại qua từng dòng, nhưng nó thực hiện toàn bộ tệp trên một dòng, sau đó lặp qua toàn bộ tệp trên dòng khác ... tiếp tục cho đến khi hết dòng .
Bất kỳ đề xuất để sửa chữa điều này?
Chỉnh sửa: Để làm rõ, hiện tại tôi có: (mọi bản ghi trên dòng 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
Những gì tôi đang tìm kiếm: (2 bản ghi trên 2 dòng)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
Không phải mỗi trường riêng lẻ được thụt lề / trên một dòng riêng biệt, mà mỗi bản ghi trên dòng riêng của nó.
Một số mẫu đầu vào.
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
không{..row..}{..row..}..
. Có nghĩa là, đầu ra trông giống như một mảng json của các đối tượng json, không phải một dòng các đối tượng json không được kết nối.