इसे कैसे इस्तेमाल करें : CSV और JSON
वह बात जो लगभग कोई नहीं कहता: “CSV फ़ॉर्मैट” कोई मानक है ही नहीं। उसके संदर्भ दस्तावेज़ पर “सिर्फ़ जानकारी के लिए” लिखा है और वह ख़ुद कहता है कि अलग-अलग सॉफ़्टवेयरों के बीच काफ़ी फ़र्क़ मौजूद हैं। इसीलिए यह औज़ार सेपरेटर मान नहीं लेता, उसे नापता है, और जो मिला वह आपको दिखा देता है।
बदलाव की दिशा आप जो चिपकाते हैं उसी से निकाल ली जाती है: जो लिखाई मझले या चौकोर कोष्ठक से शुरू होती है वह JSON है, बाकी सब CSV। यह वही तर्क है जो इस साइट की एन्क्रिप्टेड तिजोरी और पासवर्ड वाले PDF पर लगता है: लोगों से ऐसा ढंग चुनने को नहीं कहा जाता जो वे जानते ही नहीं।
CSV बिना किसी मानक वाला फ़ॉर्मैट है, और लगभग सारी मुसीबतों की जड़ यही है। उसके संदर्भ दस्तावेज़ पर “सिर्फ़ जानकारी के लिए” लिखा है, और वह ख़ुद कहता है कि अलग-अलग सॉफ़्टवेयरों के बीच काफ़ी फ़र्क़ मौजूद हैं। यूरोपीय स्प्रेडशीट पर सेपरेटर अर्धविराम होता है, क्योंकि वहाँ कॉमा दशमलव का चिह्न है। इसलिए औज़ार सेपरेटर नापता है: वह चारों उम्मीदवार आज़माता है और वही रखता है जिससे कॉलमों की गिनती सबसे बराबर बैठती है, फिर जो उसने रखा वह दिखा देता है।
संदर्भ दस्तावेज़ के नियम अक्षरशः लगाए जाते हैं, वह भी जिसे आधे बदलने वाले औज़ार चूक जाते हैं: कोट में बंद ख़ाने के अंदर नई पंक्ति आ सकती है। इसीलिए पढ़ने वाला हिस्सा लिखाई को पंक्तियों में काटने के बजाय अक्षर दर अक्षर आगे बढ़ता है। कोट में बंद ख़ाने के अंदर आया कोट दोहरा लिखा जाता है, और उल्टी दिशा में औज़ार उसे वैसा ही लिखता है।
इसे कैसे इस्तेमाल करें
- अपना CSV चिपकाएँ, या अपना JSON। औज़ार पहचान लेता है कि दोनों में से कौन-सा है और बदलाव की दिशा दिखा देता है।
- उसने जो सेपरेटर नापा है उसे जाँच लें, और पहली हेडर पंक्ति भी। बदलने वाले औज़ार को धोखा देने वाली सिर्फ़ यही दो चीज़ें हैं।
- नतीजा कॉपी कर लें या डाउनलोड कर लें। तालिका बता देती है कि कितनी पंक्तियाँ और कितने कॉलम पढ़े गए।
चलने वाले फ़ॉर्मैट
दिशा लिखाई से ही निकाल ली जाती है। दो आयामों वाली तालिका पाने के लिए JSON का ऑब्जेक्टों की सूची होना ज़रूरी है: लगभग सारे एक्सपोर्ट यही रूप बनाते हैं।
CSV फ़ॉर्मैट वाली लिखाई
सेपरेटर कॉमा, अर्धविराम, टैब और खड़ी लकीर में से नापकर चुना जाता है। कोट में बंद ख़ाने, दोहरे कोट और किसी ख़ाने के अंदर की नई पंक्तियाँ सब सँभाली जाती हैं।
JSON फ़ॉर्मैट वाली लिखाई
ऑब्जेक्टों की सूची से हर ऑब्जेक्ट के लिए एक पंक्ति बनती है और हर मिली हुई कुंजी के लिए एक कॉलम। अंदर धँसी हुई क़ीमत उसके अपने ख़ाने में JSON की तरह लिख दी जाती है, और औज़ार यह बता देता है।
इसकी सीमाएँ
CSV का कोई मानक है ही नहीं, और औज़ार इसके उलट कोई दावा नहीं करता
2005 का संदर्भ दस्तावेज़ “सिर्फ़ जानकारी के लिए” श्रेणी में है: वह चलन में देखी गई एक बात बताता है, उसे मानक नहीं बनाता, और ख़ुद कहता है कि अलग-अलग सॉफ़्टवेयरों के बीच काफ़ी फ़र्क़ मौजूद हैं। इसका असली नतीजा: जिस फ़ाइल को एक सॉफ़्टवेयर ले लेता है उसे दूसरा मना कर सकता है, और इसमें किसी की ग़लती नहीं। औज़ार उसी दस्तावेज़ के नियम लगाता है और जो उसने नापा वह दिखा देता है, ताकि आप ख़ुद परख सकें।
कई तहों वाला JSON कई तहों वाला CSV नहीं बनता
CSV सपाट तालिका है: दो आयाम, तीन नहीं। जब कोई क़ीमत ख़ुद कोई ऑब्जेक्ट या सूची हो, तो औज़ार उसे उसी ख़ाने में JSON की तरह लिख देता है और आपको बता देता है, जिससे जानकारी बची रहती है और सपाट कर लेने का नाटक भी नहीं होता। आपकी ओर से सपाट करने का कोई चलन चुन लेना, और उसके लिए गढ़े हुए कॉलम नाम बना देना, ऐसा फ़ैसला होता जो हमें लेना ही नहीं चाहिए।
संख्याओं में बदलने की सुविधा दी गई है, और वह किसी पहचान-अंक को बिगाड़ सकती है
शून्य से शुरू होने वाला पिन कोड, कोई फ़ोन नंबर, उन्नीस अंकों की कोई पहचान संख्या: इन्हें संख्या बना देने पर उनका आगे वाला शून्य या उनके आख़िरी अंक चले जाते हैं। यह डिब्बा शुरू से टिका हुआ है क्योंकि मापों वाली फ़ाइल से यही उम्मीद की जाती है, पर संदर्भ-अंकों वाली फ़ाइल पर उसका टिक हटा दें: सब कुछ लिखाई ही रहेगा।
CSV के लिए बाइट-ऑर्डर मार्क की सुविधा है, और यह बेवजह नहीं है
एक बहुत चलने वाली स्प्रेडशीट UTF-8 वाला CSV तभी ठीक दिखाती है जब फ़ाइल इसी मार्क से शुरू हो: यह उसके अपने दस्तावेज़ में लिखा है। उसके बिना अक्षर अजीब निशानों की लड़ी बन जाते हैं। पर यही मार्क कुछ दूसरे प्रोग्रामों को गिरा देता है, जो उसे पहले ख़ाने का एक अक्षर समझ लेते हैं। सब पर चलने वाला कोई सही चुनाव है ही नहीं: डिब्बा मौजूद है, और उसकी वजह उसी के बगल में लिखी है।
इस औज़ार के बारे में सवाल
क्या मेरा डेटा कहीं भेजा जाता है?
नहीं, और यह मायने रखता है: CSV फ़ाइल लगभग हमेशा असली डेटा का एक्सपोर्ट होती है, अक्सर नामों और पतों के साथ। तीस सेकंड में जाँच लें: F12 कुंजी से इंस्पेक्टर खोलें, “Network” वाला टैब खोलें, सूची ख़ाली कर दें, फिर अपनी फ़ाइल चिपकाएँ और बदलें। एक भी पंक्ति नहीं आती। अपना इंटरनेट काटकर दोबारा करके देखें।
मेरे CSV में अर्धविराम हैं, क्या यह दिक़्क़त है?
नहीं, और यूरोप में तो यही सबसे आम हालत है। वहाँ कॉमा दशमलव का चिह्न है, इसलिए स्प्रेडशीट कॉलम अलग करने के लिए अर्धविराम लगाती हैं। औज़ार चारों मुमकिन सेपरेटर आज़माता है और वही रखता है जिससे कॉलमों की गिनती सबसे बराबर बैठती है, फिर आपको बता देता है कि उसने कौन-सा रखा। उसकी माप चूक जाए तो सूची में से उसे ख़ुद थोप दें।
मेरे पिन कोड अपना आगे वाला शून्य खो देते हैं।
“जो संख्या जैसा दिखे उसे संख्या में बदलें” का टिक हटा दें। पिन कोड, फ़ोन नंबर या खाते की संख्या असल में संख्याएँ हैं ही नहीं: वे अंकों की लड़ियाँ हैं, और उन्हें संख्या मान लेने पर आगे वाला शून्य चला जाता है। यह डिब्बा शुरू से टिका हुआ है क्योंकि मापों वाली फ़ाइल से यही उम्मीद की जाती है, पर वह एक क्लिक में हट जाता है और सब कुछ लिखाई ही रह जाता है।
अपनी स्प्रेडशीट में CSV खोलने पर अक्षर क्यों बिगड़ जाते हैं?
क्योंकि एक बहुत चलने वाली स्प्रेडशीट CSV में UTF-8 तभी पहचानती है जब फ़ाइल बाइट-ऑर्डर मार्क से शुरू हो: यह उसके अपने दस्तावेज़ में लिखा है। उसे जोड़ने वाले डिब्बे पर टिक लगाएँ और फ़ाइल दोबारा खोलें। उल्टी बात का भी ध्यान रखें: यही मार्क कुछ प्रोग्रामों को गिरा देता है, जो उसे पहले ख़ाने का एक अक्षर समझ लेते हैं। सब पर चलने वाला कोई सही चुनाव है ही नहीं, सिर्फ़ वह चुनाव है जो आपकी मंज़िल पर फ़बता हो।
मेरे JSON में ऑब्जेक्ट के अंदर ऑब्जेक्ट हैं। उस ढाँचे का क्या होता है?
वह बचा रहता है, पर ख़ाने के अंदर JSON की तरह लिखा जाता है, और औज़ार आपको यह बता देता है। CSV सपाट तालिका है, दो आयामों वाली: तीन तहों के ढाँचे को उसमें रखने का कोई सब पर चलने वाला तरीक़ा है ही नहीं। चलन मौजूद हैं, वे “address.city” जैसे कॉलम नाम गढ़ देते हैं, और उनमें से हर एक मनमाना चुनाव है। हमें यह बेहतर लगता है कि आपका डेटा जस का तस रहे और हम आपको बता दें कि वह कहाँ है।
वह बात जो लगभग कोई नहीं कहता: “CSV फ़ॉर्मैट” कोई मानक है ही नहीं। उसके संदर्भ दस्तावेज़ पर “सिर्फ़ जानकारी के लिए” लिखा है और वह ख़ुद कहता है कि अलग-अलग सॉफ़्टवेयरों के बीच काफ़ी फ़र्क़ मौजूद हैं। इसीलिए यह औज़ार सेपरेटर मान नहीं लेता, उसे नापता है, और जो मिला वह आपको दिखा देता है।
जाँचेंसबूत, कदम दर कदमनेटवर्क इंस्पेक्टर से जाँच, एक-एक हरकत समझाई हुई, तस्वीरों के साथ।
यह कोनालिखाई और डेटा वाला कोनागिनना, मिलाना, सजाना, साफ़ करना। वे छोटे-छोटे काम जो हाथ में न हों तो एक घंटा खा जाते हैं।