Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby के साथ CSV फाइलों को आसानी से पढ़ें और पार्स करें

CSV का अर्थ है "कॉमा-सेपरेटेड वैल्यूज़"।

यह एक सामान्य डेटा फॉर्मेट है जिसमें कॉमा से अलग किए गए मानों वाली पंक्तियाँ होती हैं। इसका उपयोग डेटा निर्यात और आयात के लिए किया जाता है।

उदाहरण के लिए:

आप अपने Gmail संपर्कों को CSV फाइल के रूप में निर्यात कर सकते हैं, और आप उन्हें उसी फॉर्मेट का उपयोग करके आयात भी कर सकते हैं।

एक CSV फाइल ऐसी दिखती है:

 id,name 1,chocolate 2,bacon 3,apple 4,banana 5,almonds 

अब आप Ruby CSV लाइब्रेरी का उपयोग करके CSV फाइलों को पढ़ना और लिखना सीखेंगे।

Ruby CSV पार्सिंग

Ruby एक अंतर्निहित CSV लाइब्रेरी के साथ आता है।

आप सीधे एक फाइल पढ़ सकते हैं:

 require 'csv' CSV.read("favorite_foods.csv") 

या आप CSV डेटा वाले स्ट्रिंग को पार्स कर सकते हैं:

 require 'csv' CSV.parse("1,chocolate\n2,bacon\n3,apple") 

परिणाम?

आपको एक दो-आयामी सरणी मिलती है जहां प्रत्येक प्रविष्टि तालिका में एक पंक्ति है।

यह ऐसा दिखता है:

 [ ["id", "name"], ["1", "chocolate"], ["2", "bacon"], ["3", "apple"], ["4", "banana"], ["5", "almonds"] ] 

आप इस डेटा के साथ काम करने के लिए data[1][1] जैसे सरणी इंडेक्स का उपयोग कर सकते हैं।

लेकिन एक बेहतर तरीका है!

CSV विकल्प

यदि आपकी फाइल में हेडर्स हैं तो आप CSV पार्सर को उनका उपयोग करने के लिए कह सकते हैं।

इस तरह:

 table = CSV.parse(File.read("cats.csv"), headers: true) 

अब बहु-आयामी सरणी के बजाय आपको एक CSV टेबल ऑब्जेक्ट मिलता है।

यहां विवरण है:

"एक CSV::Table CSV दस्तावेजों का प्रतिनिधित्व करने के लिए एक दो-आयामी डेटा संरचना है। टेबल्स आपको डेटा के साथ पंक्ति या कॉलम द्वारा काम करने, डेटा में हेरफेर करने, और यहां तक कि परिणामों को वापस CSV में बदलने की अनुमति देते हैं।"

इन टेबल्स में से एक को देखते हुए, आप किसी भी पंक्ति से आवश्यक डेटा प्राप्त कर सकते हैं।

उदाहरण:

 table[0]["id"] # "1" table[0]["name"] # "chocolate" 

यहां 0 पहली पंक्ति है, id और name कॉलम नाम हैं।

दो टेबल मोड हैं:

  • by_col
  • by_row

टेबल मोड बदलकर (row डिफ़ॉल्ट रूप से) आप डेटा को विभिन्न कोणों से देख सकते हैं।

उदाहरण के लिए:

 table.by_col[0] # ["1", "2", "3", "4", "5"] table.by_col[1] # ["chocolate", "bacon", "apple", "banana", "almonds"] 

यहां 0 पहला कॉलम है, 1 दूसरा कॉलम है।

ये दो मेथड्स टेबल की एक कॉपी लौटाते हैं।

यदि आप मूल टेबल में परिवर्तन करना चाहते हैं तो आप by_col! और by_row! मेथड्स का उपयोग कर सकते हैं।

यह अधिक मेमोरी-कुशल होगा क्योंकि टेबल की कोई कॉपी नहीं बनाई जाती।

CSV कन्वर्टर्स का उपयोग कैसे करें

आपने देखा होगा कि हमें अपना id कॉलम स्ट्रिंग्स की सरणी के रूप में मिला।

क्या होगा अगर हमें इंटीजर्स चाहिए?

आप प्रत्येक स्ट्रिंग पर to_i कॉल करके उन्हें प्राप्त कर सकते हैं...

लेकिन एक शॉर्टकट है!

Ruby CSV लाइब्रेरी कन्वर्टर्स नामक कुछ लागू करती है।

एक कन्वर्टर आपके लिए स्वचालित रूप से मानों को बदल देगा।

उदाहरण के लिए:

 CSV.parse("1,2,3,4,5") # [["1", "2", "3", "4", "5"]] CSV.parse("1,2,3,4,5", converters: :numeric) # [[1, 2, 3, 4, 5]] 

6 अंतर्निहित कन्वर्टर्स हैं:

  • Integer
  • Float
  • Numeric (Float + Integer)
  • Date
  • DateTime
  • All

लेकिन आप अपने स्वयं के कस्टम कन्वर्टर्स भी बना सकते हैं।

यहां कैसे:

 CSV::Converters[:symbol] = ->(value) { value.to_sym rescue value } 

आप अपने नए कन्वर्टर का उपयोग इस तरह कर सकते हैं:

 CSV.parse("a,b,c", headers: false, converters: :symbol) # [[:a, :b, :c]] 

नई CSV फाइल कैसे बनाएं

CSV फाइलों को विभिन्न तरीकों से पार्स और पढ़ने में सक्षम होने के अलावा आप स्क्रैच से CSV भी बना सकते हैं।

यह आसान तरीका है:

 cats = [ [:blue, 1], [:white, 2], [:black_and_white, 3] ] cats.map { |c| c.join(",") }.join("\n") 

आप generate मेथड का भी उपयोग कर सकते हैं:

 CSV.generate do |csv| csv << [:blue, 1] csv << [:white, 2] csv << [:black_and_white, 3] end 

यह डेटा को सही फॉर्मेट में तैयार करता है।

यदि आप किसी फाइल में लिखना चाहते हैं तो आपको File.write("cats.csv", data) जैसी किसी चीज का उपयोग करना होगा, या generate के बजाय आप फाइल नाम और राइट मोड सक्षम के साथ open का उपयोग कर सकते हैं।

इस तरह:

 CSV.open("cats.csv", "w") do |csv| csv << [:white, 2] end 

अब आपके पास एक नई CSV फाइल है!

CSV जेम्स और प्रदर्शन

अंतर्निहित लाइब्रेरी ठीक है और काम पूरा कर देगी।

लेकिन आप विभिन्न सुविधाओं के साथ कुछ CSV पार्सिंग जेम्स भी पा सकते हैं।

उदाहरण के लिए, smarter_csv जेम आपके CSV डेटा को हैशेज की सरणी में बदल देगा।

उदाहरण:

 require 'smarter_csv' IntegerConverter = Object.new def IntegerConverter.convert(value) Integer(value) end SmarterCSV.process('testing.csv', value_converters: { id: IntegerConverter }) # [{:id=>1, :name=>"a"}, {:id=>2, :name=>"b"}, {:id=>3, :name=>"c"}] 

यहां एक प्रदर्शन तुलना है:

 Comparison: CSV: 112.9 i/s Smarter CSV: 21.7 i/s - 5.21x slower Tabular: 17.3 i/s - 6.52x slower 

सारांश

आपने Ruby में CSV फाइलों को पढ़ना और लिखना सीखा! आपने कन्वर्टर्स और अपने CSV डेटा को प्रोसेस करने के लिए वैकल्पिक Ruby जेम्स के बारे में भी सीखा।

यदि आप बड़ी CSV फाइलों को प्रोसेस करना चाहते हैं (> 10MB) तो आप ब्लॉक के साथ CSV.foreach(file_name) मेथड का उपयोग करना चाह सकते हैं। यह एक समय में एक पंक्ति पढ़ेगा और बहुत कम मेमोरी का उपयोग करेगा।

कृपया इस लेख को साझा करें ताकि अधिक लोग इसे ढूंढ सकें!


  1. रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड रूबी में फाइलें कैसे पढ़ें और लिखें: एक चरण-दर-चरण गाइड

    आज आप सीखेंगे कि रूबी में फाइलें कैसे पढ़ें और लिखें ताकि आप सामग्री निकाल सकें, नई फाइलें बना सकें, और वह जानकारी ढूंढ सकें जिसकी आपको आवश्यकता है! यहां हम क्या कवर करने जा रहे हैं: विषयसूची1 रूबी में फाइलें कैसे पढ़ें2 रूबी में फाइल में कैसे लिखें3 रूबी फाइल मेथड्स4 डायरेक्टरी ऑपरेशन्स5 FileUtils

  1. रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं

    पार्सिंग स्ट्रिंग्स के एक समूह को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकें। आप रेगुलर एक्सप्रेशन्स का उपयोग कर सकते हैं, लेकिन वे हमेशा इस काम के लिए उपयुक्त नहीं होते। उदाहरण के लिए, यह सामान्य ज्ञान है कि HTML को रेगुलर एक्सप्रेशन्स से पार्स करना शायद एक अच्छा विचार नहीं

  1. वनड्राइव फाइलों को किसी के साथ सुरक्षित रूप से शेयर करें - पूर्ण गाइड वनड्राइव फाइलों को किसी के साथ सुरक्षित रूप से शेयर करें - पूर्ण गाइड

    माइक्रोसॉफ्ट वनड्राइव विंडोज के लिए डिफ़ॉल्ट ऑनलाइन स्टोरेज और सिंकिंग सेवा है। इसके साथ आने वाली अविश्वसनीय रूप से विस्तृत सुविधाओं की सरणी के साथ, हम यह कहने में संकोच नहीं करते कि यह ऐप अपने लगभग सभी प्रतिस्पर्धियों से बेहतर है। वनड्राइव आपको दस्तावेज़ ऑनलाइन स्टोर करने देता है और वेब एप्लिकेशन म