นี่คือรหัสของฉันสิ่งง่ายๆจริงๆ ...
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)
ประกาศชื่อฟิลด์บางฟิลด์ผู้อ่านใช้ CSV เพื่ออ่านไฟล์และชื่อที่ยื่นเพื่อดัมพ์ไฟล์เป็นรูปแบบ JSON นี่คือปัญหา ...
แต่ละระเบียนในไฟล์ CSV อยู่คนละแถวกัน ฉันต้องการให้เอาต์พุต JSON เป็นแบบเดียวกัน ปัญหาคือมันทิ้งมันทั้งหมดลงบนเส้นยักษ์เส้นยาว
ฉันได้ลองใช้บางอย่างเช่นfor line in csvfile:
แล้วเรียกใช้โค้ดของฉันด้านล่างreader = csv.DictReader( line, fieldnames)
ซึ่งจะวนซ้ำในแต่ละบรรทัด แต่มันทำทั้งไฟล์ในบรรทัดเดียวจากนั้นวนซ้ำไฟล์ทั้งหมดในบรรทัดอื่น ... ดำเนินต่อไปจนกว่าจะหมดบรรทัด .
ข้อเสนอแนะสำหรับการแก้ไขนี้หรือไม่?
แก้ไข: เพื่อชี้แจงตอนนี้ฉันมี: (ทุกบันทึกในบรรทัดที่ 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
สิ่งที่ฉันกำลังมองหา: (2 บันทึก 2 บรรทัด)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
ไม่ใช่แต่ละเขตข้อมูลที่เยื้อง / บนบรรทัดแยกกัน แต่เป็นแต่ละระเบียนในบรรทัด
อินพุตตัวอย่างบางส่วน
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
{..row..}{..row..}..
กล่าวคือผลลัพธ์ดูเหมือนว่าจะเป็นอาร์เรย์ json ของวัตถุ json ไม่ใช่สตรีมของวัตถุ json ที่ไม่ได้เชื่อมต่อ