यहाँ मेरा कोड है, वास्तव में सरल सामान ...
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..}..
। कहने का मतलब यह है कि आउटपुट ऐसा लगता है कि यह जोंस ऑब्जेक्ट्स का एक जस्सन सरणी होगा, न कि अनकॉन्स्ड जोंस ऑब्जेक्ट्स की एक स्ट्रीम।