अवलोकन:
आपका काम CSV इनपुट को key=valueप्रारूप में लेना है और इसे अधिक संगठित (नीचे देखें) तरीके से पंक्तिबद्ध करना है।
इनपुट:
हमेशा डंडा लेकर । रिकॉर्ड हमेशा निम्नलिखित रूप में होंगे key=value:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- अग्रिम में संभावित कुंजी की कोई सूची नहीं होगी, आपको उन्हें इनपुट टेक्स्ट में ढूंढना होगा।
- इनपुट का अंत आपके ओएस के लिए
EOFजो भीEOFउचित हो , के द्वारा संकेत दिया जाएगा ।
आउटपुट:
आपके आउटपुट की पहली पंक्ति सभी कुंजियों की एक सूची होगी, वर्णानुक्रम में (भले ही कुंजियाँ सभी संख्याएँ हों)। उसके बाद, प्रत्येक रिकॉर्ड को उसी CSV में सूचीबद्ध करें, जो सूचीबद्ध की गई कुंजियों के बिना उपयुक्त संख्या शीर्षक को प्रारूपित करता है। इसलिए, ऊपर दिए गए उदाहरण के लिए, सही आउटपुट होगा:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
सामान्य प्रश्न:
- क्या मुझे अनुचित रूप से स्वरूपित इनपुट के बारे में चिंता करने की ज़रूरत है?
- यदि आपका इनपुट सही ढंग से फ़ॉर्मेट नहीं किया गया है, तो उदाहरण के लिए, आपका प्रोग्राम वह कर सकता है जो कोई अपवाद (अपवाद, उपेक्षा, इत्यादि फेंकें)
foo,bar,baz
- यदि आपका इनपुट सही ढंग से फ़ॉर्मेट नहीं किया गया है, तो उदाहरण के लिए, आपका प्रोग्राम वह कर सकता है जो कोई अपवाद (अपवाद, उपेक्षा, इत्यादि फेंकें)
- मैं विशेष पात्रों से बचने के लिए कैसे संभाल सकता हूं?
- आप मान सकते हैं कि कोई अतिरिक्त
,या=डेटा नहीं होगा जोkey=valueप्रारूप का हिस्सा नहीं हैं ।"इस प्रतियोगिता में कोई विशेष अर्थ नहीं है (भले ही यह पारंपरिक सीएसवी में हो)।किसी भी तरह से विशेष नहीं है। - पंक्तियों को निम्नलिखित रेगेक्स से मेल खाना चाहिए:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$- इसलिए, कुंजी और मूल्य दोनों मेल खाएंगे
[^=,]+
- इसलिए, कुंजी और मूल्य दोनों मेल खाएंगे
- आप मान सकते हैं कि कोई अतिरिक्त
CRLFबनाम के बारे में क्याLF?- आप अपने प्लेटफ़ॉर्म के लिए जो भी परिसीमन उपयुक्त है, उसे चुन सकते हैं। अधिकांश भाषाएं इसे विशेष परिसीमन कोड के बिना संभालती हैं।
- यदि पिछले कुछ कॉलम मौजूद नहीं हैं, तो क्या मुझे ट्रेलिंग कॉमा प्रिंट करना होगा?
- हाँ। उदाहरण देखें।
- क्या CSV पार्सर या अन्य समान बाहरी उपकरणों की अनुमति है?
- नहीं। आपको डेटा को स्वयं पार्स करना होगा।