क्या कोई रूबी टूल है जो मुझे (संक्षेप में => एआरबी) के प्रारूप में संक्षिप्ताक्षर की फ़ाइल लोड करने की अनुमति देगा? तब मुझे एक और फाइल से प्रत्येक शब्द को पढ़ने की जरूरत है। यदि शब्द संक्षेप में शब्द से मेल खाता है तो मुझे इसे संक्षिप्त शब्द में बदलने की आवश्यकता है। मुझे लगता है कि मैं हैश का उपयोग कर सकता हूं लेकिन मुझे नहीं पता कि इसे फ़ाइल से कैसे लोड किया जाए।रूबी: फ़ाइल से हैश कैसे लोड करें?
उत्तर
YAML डेटा को संग्रहीत करने के लिए एक बहुत ही सार्वभौमिक प्रारूप है जिसे ऐप्स और प्रोग्रामिंग भाषाओं के बीच स्थानांतरित किया जा सकता है। JSON एक और वैकल्पिक है, जो वेब साइटों में बहुत आम है।
मैं कॉन्फ़िगरेशन फ़ाइलों जैसी चीजों के लिए वाईएएमएल का उपयोग करता हूं क्योंकि इसे बहुत आसानी से पढ़ा और संशोधित किया जाता है। उदाहरण के लिए, इस रूबी संरचना:
irb(main):002:0> foo = { 'a' => 1, 'b' => [2, 3], 'c' => { 'd' => 4, 'e' => 5 } }
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
इस तरह लग रहा है जब YAML में बदला:
irb(main):003:0> puts foo.to_yaml
---
a: 1
b:
- 2
- 3
c:
d: 4
e: 5
आप एक फ़ाइल है कि बचत हो सकती है:
File.open('foo.yaml', 'w') { |fo| fo.puts foo.to_yaml }
और उसे वापस पढ़ें:
bar = YAML.load_file('foo.yaml')
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
इसी प्रकार y, JSON का उपयोग कर:
puts foo.to_json
{"a":1,"b":[2,3],"c":{"d":4,"e":5}}
आप की तरह आप YAML के साथ होता है एक फाइल करने के लिए JSON बचा सकता है और फिर इसे फिर से लोड करके उसे फिर से चालू हैश में। यह थोड़ी अलग वाक्य रचना हालांकि:
irb(main):011:0> File.open('foo.json', 'w') { |fo| fo.puts foo.to_json }
nil
irb(main):012:0> bar = JSON.parse(File.read('foo.json'))
{
"a" => 1,
"b" => [
[0] 2,
[1] 3
],
"c" => {
"d" => 4,
"e" => 5
}
}
बड़ी जीत किसी के साथ किसी भी भाषा कि YAML पढ़ सकते हैं या JSON उन फ़ाइलों को पढ़ सकते हैं और डेटा का उपयोग कर सकते हैं, या तो पढ़ने या इसे लिखने है।
स्ट्रिंग प्रतिस्थापन करना आपके पास हैश होने के बाद बहुत आसान है, क्योंकि रुबी स्ट्रिंग का gsub
हैश समझता है। , दूसरा तर्क एक हैश है, और मिलान वाला पाठ अपनी कुंजियों में से एक है, तो
संबंधित मान प्रतिस्थापन स्ट्रिंग है: यह the docs से है।
इसका मतलब है आप कुछ इस तरह कर सकते हैं:
foo = 'Jackdaws love my giant sphinx of quartz'
bar = { 'quartz' => 'rosy quartz', 'sphinx' => 'panda' }
foo.gsub(Regexp.union(bar.keys), bar)
"Jackdaws love my giant panda of rosy quartz"
आप शब्द सीमा टकराव प्रतिस्थापन करने के लिए बाहर देखने के लिए करते हैं, लेकिन एक पैटर्न में \b
झंडा सहायक हो सकता है। वह काम करना पाठक के लिए एक अभ्यास है।
Marshal.load
और Marshal.dump
देखें।
इसके अलावा, आप हैश को यम फ़ाइल में क्रमबद्ध करने और फिर इसे YAML के माध्यम से वापस सहेजने/सहेजने में देख सकते हैं।
'मार्शल' प्रारूप उपयोग में रूबी संस्करण के लिए विशिष्ट (या हो सकता है) है और संस्करणों के मेल नहीं होने पर 'मार्शल' डेटा पढ़ने के लिए कोई (सनी) तरीका नहीं है। यह धारा में क्रमिकरण के लिए एक खराब प्रारूप बनाता है। –
मुझे यह http://www.rubydoc.info/gems/bosh-director/1.1868.0/Bosh%2FDirector%2FConfig.load_hash मिला है जो खुद को हैश लोड करने के तरीके को देखने के बाद मिला।
मेरा उदाहरण एक रेल ऐप में मोंगोडीबी से निपटने पर है।
इसलिए मैंने संग्रह प्राप्त करने के लिए एक प्रारंभिक विधि सेट की है जिसके साथ मैं काम करने जा रहा हूं।
def initialize @collection = self.class.collection end
self.class यहाँ वर्ग मैंने कर लिया है। एक उदाहरण के रूप में लोग उपयोग करते हैं।
लोड विधि निम्नलिखित
def load_collection(file_path)
hash_values = self.class.load_hash(file_path)
@collection.insert_many(hash)
end
एक binding.pry
[1] pry(#<People>)> file_path
=> "people_results.json"
[2] pry(#<People>)> hash
=> [{"number"=>0, "first_name"=>"SHAUN", "last_name"=>"JOHNSON", "gender"=>"M", "group"=>"15 to 19", "secs"=>1464}, {"number"=>1, "first_name"=>"TUAN", "last_name"=>"JOHNSON", "gender"=>"M", "group"=>"masters", "secs"=>3994}, {"number"=>2, "first_name"=>"EARLINE", "last_name"=>"BROWN", "gender"=>"F", "group"=>"masters", "secs"=>1415}...
[3] pry(#<People>)> self
=> #<People:0x007fc80301b5f8 @coll=#<Mongo::Collection:0x70248510355560 namespace=test.people>>
[4] pry(#<People>)> self.class
=> People
इस मामले
load_hash
विधि एक पैरामीटर लेता में
तो अंदर
है, और इस मामले में मैं एक json में पारित कुछ डेटा के साथ फ़ाइल करें। फिर मैं उस डेटा को अपने संग्रह में डालता हूं।
- 1. रूबी: इंटरैक्टिव रूबी कंसोल (आईआरबी) में फ़ाइल कैसे लोड करें?
- 2. फ़ाइल में हैश तालिका कैसे स्टोर करें?
- 3. रूबी हैश
- 4. रूबी में हैश पर कैसे पुनरावृत्ति करें?
- 5. रूबी हैश को संख्या मूल्य से कैसे क्रमबद्ध करें?
- 6. रूबी - हैश
- 7. रूबी हैश
- 8. मैं एक पर्ल हैश में फ़ाइल कैसे लोड करूं?
- 9. रूबी हैश और/या सरणी में एक yaml फ़ाइल को कैसे पार्स करें?
- 10. रेल पर रूबी: वाईएएमएल फ़ाइल से बीज डेटा लोड करना
- 11. रूबी हैश को एक टेबल प्रारूप में कैसे प्रिंट करें?
- 12. रूबी: मूल्यों से हैश में आइटम खोजें
- 13. हैश [ 'कुंजी'] रूबी
- 14. nib फ़ाइल से UIView लोड करें?
- 15. शुद्ध-रूबी समवर्ती हैश
- 16. रूबी पहुँच हैश तत्व
- 17. बाहरी फ़ाइल से jQuery-टेम्पलेट लोड करें?
- 18. रूबी कोलन हैश सिंटैक्स हाइलाइटिंग
- 19. रूबी हैश सम्मिलन आदेश
- 20. एक रूबी हैश ऑब्जेक्ट को JSON में कैसे परिवर्तित करें?
- 21. एक पीएनजी फ़ाइल से ImageView कैसे लोड करें?
- 22. सी #: संसाधन फ़ाइल से कर्सर कैसे लोड करें?
- 23. XNA में फ़ाइल से वीडियो कैसे लोड करें? (केवल पीसी)
- 24. एक जावास्क्रिप्ट फ़ाइल को दूसरे से कैसे लोड करें?
- 25. फ़ाइल से आरएसए निजी कुंजी कैसे लोड करें
- 26. रूबी: मौजूदा कामकाजी डीआईआर से फ़ाइल की "आवश्यकता" कैसे करें?
- 27. बाहरी एक्सएमएल फ़ाइल लोड करें?
- 28. रूबी में, वाईएएमएल दस्तावेज़ लोड करते समय हैश में डुप्लिकेट कुंजी की चेतावनी कैसे दी जाए?
- 29. रूबी: रूबी सरणी कैसे समूहित करें?
- 30. एक धार फ़ाइल से SHA1 हैश निकालें
हालांकि यह एक अच्छा स्पष्टीकरण है, मैं तर्क दूंगा कि यमल या जेसन में लाने से केवल एक साधारण अभ्यास जटिल हो जाता है। फ़ाइल पहले से मौजूद है, और यह पहले से ही जितनी सरल हो उतनी सरल है - एक सीमित पाठ फ़ाइल, प्रति पंक्ति एक रिकॉर्ड। फ़ाइल को बस लाइन से पढ़ें, इसे विभाजित करें, और हैश बनाएं। – Jim
धन्यवाद! यह अभी सही काम करता है। – user1128637