मैं एक CSV लाइन को रीबोल ब्लॉक में बदलने के लिए PARSE का उपयोग करने का प्रयास कर रहा हूं। खुले कोड में लिखने में काफी आसान है, लेकिन अन्य प्रश्नों के साथ मैं सीखने की कोशिश कर रहा हूं कि बोली इसके बिना क्या कर सकती है।सीएसवी से लाइन में पढ़ने के लिए PARSE बोली का उपयोग कैसे करें?
तो एक लाइन का कहना है यदि: सूचना के लिए
[{Look, that's "MR. Fork" to you!} {Hostile Fork} none {http://hostilefork.com}]
मुद्दे::
"Look, that's ""MR. Fork"" to you!",Hostile Fork,,http://hostilefork.com
तब मैं ब्लॉक चाहते
- सीएसवी तार में एंबेडेड उद्धरण
""
साथ दिखाई देते हैं
- कॉमा उद्धरण और एच के अंदर हो सकता है शाब्दिक, नहीं एक स्तंभ विभाजक के खिलाडि़यों हिस्सा
- सटे स्तंभ को अलग करने के लिए अल्पविराम एक खाली क्षेत्र से संकेत मिलता है
- स्ट्रिंग्स कि उद्धरण शामिल नहीं है या अल्पविराम उद्धरण
- पल हम चीजों को रख सकते हैं के लिए बिना प्रदर्शित हो सकता STRING के रूप में
http://rebol.com
की तरह! LOAD के बजाय इस तरह के URL!
यह अधिक समान बनाने के रूप में प्रकार में उन्हें ing, पहली बात मैं कर इनपुट लाइन के लिए एक अल्पविराम संलग्न है। तब मेरे पास column-rule
है जो एक अल्पविराम द्वारा समाप्त एक कॉलम को कैप्चर करता है ... जो या तो उद्धरण में हो सकता है या नहीं।
मुझे पता है कि कितने कॉलम वहाँ हैडर लाइन की वजह से होना चाहिए, इसलिए कोड तो कहते हैं:
unless parse line compose [(column-count) column-rule] [
print rejoin [{Expected } column-count { columns.}]
]
लेकिन मैं थोड़ा column-rule
लेखन पर अटक कर रहा हूँ। मुझे व्यक्त करने के लिए बोली में एक तरीका चाहिए "एक बार जब आप उद्धरण प्राप्त कर लेते हैं, तब तक उद्धरण जोड़ों को छोड़ दें जब तक कि आप अपने आप को एक उद्धरण खड़े न हों।" ऐसा करने का एक अच्छा तरीका क्या है?
मेरे द्वारा दिए गए निराला डेटा पर काम करने के लिए (अब तक) एक उत्तर पर शानदार प्रतिक्रिया समय लगता है! – HostileFork