एक पाठ फ़ाइल की कल्पना करें जहां प्रत्येक सीएसवी रिकॉर्ड में विभिन्न संख्या के क्षेत्र हो सकते हैं। कार्य कोड को आउटपुट में लिखना है कि फ़ाइल के प्रत्येक रिकॉर्ड में कितने फ़ील्ड हैं। आप मान सकते हैं कि फ़ाइल में कोई हेडर लाइन नहीं है और आप फ़ाइल या मानक इनपुट से पढ़ सकते हैं, जैसा कि आप चुनते हैं।
आप csv नियमों के लिए rfc4180 का एक संस्करण मान सकते हैं, जो मैं फ़ाइल की प्रत्येक पंक्ति की परिभाषा के लिए नीचे बताऊंगा । यहाँ कल्पना के प्रासंगिक भाग का एक हल्का संपादित संस्करण है:
सीएसवी प्रारूप की परिभाषा
प्रत्येक रिकॉर्ड एक अलग लाइन पर स्थित होता है, जिसे लाइन ब्रेक (CRLF) द्वारा सीमांकित किया जाता है। उदाहरण के लिए:
aaa,bbb,ccc CRLF zzz,yyy,xxx CRLFफ़ाइल का अंतिम रिकॉर्ड एंडिंग लाइन ब्रेक हो सकता है या नहीं। उदाहरण के लिए:
aaa,bbb,ccc CRLF zzz,yyy,xxx
(नियम 3. इस चुनौती में लागू नहीं होता है)
प्रत्येक रिकॉर्ड के भीतर, कॉमा द्वारा अलग किए गए एक या एक से अधिक फ़ील्ड हो सकते हैं। रिक्त स्थान को एक क्षेत्र का हिस्सा माना जाता है और इसे अनदेखा नहीं किया जाना चाहिए।
प्रत्येक क्षेत्र डबल कोट्स में संलग्न हो भी सकता है और नहीं भी। यदि फ़ील्ड दोहरे उद्धरणों से संलग्न नहीं हैं, तो फ़ील्ड के अंदर दोहरे उद्धरण प्रकट नहीं हो सकते हैं। उदाहरण के लिए:
"aaa","bbb","ccc" CRLF zzz,yyy,xxxलाइन विराम (CRLF), दोहरे उद्धरण और अल्पविराम वाले फ़ील्ड को दोहरे उद्धरणों में संलग्न किया जाना चाहिए। उदाहरण के लिए:
"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxxयदि डबल-कोट्स का उपयोग खेतों को घेरने के लिए किया जाता है, तो किसी फ़ील्ड के अंदर दिखाई देने वाले दोहरे-उद्धरण को दूसरे दोहरे उद्धरण से पहले ले जाने से बचना चाहिए। उदाहरण के लिए:
"aaa","b""bb","ccc"
उदाहरण
इनपुट:
,"Hello, World!"
"aaa","b""bb","ccc"
zzz,yyy,
"aaa","b
bb","ccc","fish",""
आउटपुट देना चाहिए:
2, 3, 3, 5
आप किसी भी तरह से आउटपुट मान दे सकते हैं जो आपको सबसे सुविधाजनक लगता है।
पुस्तकालय
आप अपनी पसंद की किसी भी लाइब्रेरी का उपयोग कर सकते हैं।
अब तक बहुत बढ़िया जवाब लेकिन हमें एक कमांड लाइन / बैश उत्तर याद आ रहा है जो विशेष रूप से अच्छा होगा।