2013-10-11 9 views
5

रूबी 2.0 के साथ एक स्ट्रिंग को पार्स करने में त्रुटि, साइको का उपयोग करते हुए यामल को डबल कोट्स से बचने में परेशानी होती है। किसी को इसका समाधान करने का कोई विचार है?वाईएएमएल: बच निकले डबल कोट

data_ =<<END_ 
description: "Acme acquires ILM: Lucas says \"Inevitable!\"" 
END_ 

ap YAML.load(data_) 

भी

/Users/x/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/psych.rb:205:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 1 column 1 (Psych::SyntaxError)  

का उत्पादन एकल उद्धरण के साथ प्रवेश पलायन काम करता है, लेकिन अगर यह एकल उद्धरण शामिल हैं, एक त्रुटि में उन्हें परिणामों से बचने,।

description: 'Acme acquires ILM: Lucas says "It\'s Inevitable!"' 

एक आदर्श दुनिया में, प्रविष्टियों उचित यूनिकोड टंकण उद्धरण चिह्न होगा, लेकिन मैं इन पर नियंत्रण की जरूरत नहीं है (हालांकि मैं उन्हें YAML साथ प्रक्रिया से पहले की जगह सकता है) ...

कोई भी विचार YAML पार्स को ठीक से रखने पर?

अद्यतन: मेरे प्रश्न का उत्तर दें। पता चला कि यह यह दोहराने के लिए एक एकल उद्धरण से बचने के लिए संभव है, तो यह काम करता है:

description: 'Acme acquires ILM: Lucas says "It''s Inevitable!"' 

मैं YAML.dump (वांछित-स्ट्रिंग) का उपयोग करके यह पता चला

उत्तर

7

आपका समस्या यह है कि heredocs है जहां तक ​​भागने का सवाल है, दोहरे उद्धृत तारों की तरह कार्य करें। इसका मतलब है कि आपके हेरडोक में \" आपकी स्ट्रिंग में केवल " के रूप में समाप्त होता है। का निरीक्षण करें:, वैकल्पिक रूप से

data_ =<<END_ 
description: "Acme acquires ILM: Lucas says \\"Inevitable!\\"" 
END_ 

%q{...} का उपयोग अपने स्ट्रिंग उद्धृत करने के लिए इतना है कि यह अधिक एक तरह बर्ताव करता है:

>> data_ =<<END_ 
description: "Acme acquires ILM: Lucas says \"Inevitable!\"" 
END_ 
>> puts data_ 
description: "Acme acquires ILM: Lucas says "Inevitable!"" 

आप YAML स्ट्रिंग में एक \ प्राप्त करने के लिए, तो आप इसे से बचने के लिए होगा चाहते हैं एकल उद्धृत स्ट्रिंग:

data_ = %q{ 
description: "Acme acquires ILM: Lucas says \"Inevitable!\"" 
} 
+0

ए-हा! तो मैं गलत जगह पर देख रहा था। धन्यवाद! – aaandre

+0

मैं शायद उस स्ट्रक्चर का निर्माण करूंगा जो आप रूबी ऑब्जेक्ट्स के रूप में चाहते हैं और फिर स्ट्रिंग प्राप्त करने के लिए 'to_yaml'', इस तरह की चिंता करने के लिए कम उद्धरण बकवास। –

संबंधित मुद्दे