আমি কীভাবে একটি কলামে বিভিন্ন ডেটা দিয়ে রুবিতে কোনও সিএসভি ফাইলের কয়েকটি কলামের অনুলিপি তৈরি করব?


85

আমার কাছে "A.csv" নামে একটি CSV ফাইল রয়েছে। আমাকে "A.csv" থেকে ডেটা সহ "বিসিএসভি" নামে একটি নতুন সিএসভি ফাইল তৈরি করতে হবে।

আমি "A.csv" থেকে কলামগুলির একটি উপসেট ব্যবহার করব এবং একটি কলামের মানগুলি "B.csv" তে নতুন মানগুলিতে আপডেট করতে হবে। শেষ পর্যন্ত, আমি কোনও ডাটাবেসের বিরুদ্ধে বৈধতা দেওয়ার জন্য বিসিএসভি থেকে এই ডেটা ব্যবহার করব।

  1. আমি কীভাবে একটি নতুন সিএসভি ফাইল তৈরি করব?
  2. আমি কীভাবে প্রয়োজনীয় কলামগুলির ডেটা এসিএসভি থেকে "বিসিএসভি" তে অনুলিপি করব?
  3. আমি কীভাবে একটি নির্দিষ্ট কলামের মান সংযোজন করব?

আমি রুবিতে নতুন, তবে অ্যারে বা হ্যাশ পেতে আমি সিএসভি পড়তে সক্ষম।


4
এটিতে মৌলিক তথ্যের অভাব রয়েছে যেমন সমস্যা সমাধানের দিকে আমাদের আপনার প্রচেষ্টা দেখানো। এই তথ্যটি সিএসভি ডকুমেন্টেশনে রয়েছে। " কীভাবে জিজ্ঞাসা করবেন " এবং " ন্যূনতম পুনরুত্পাদনযোগ্য উদাহরণ " পড়ুন।
টিন ম্যান

উত্তর:


193

মাইকিব যেমন উল্লেখ করেছেন, এখানে ডকগুলি রয়েছে - http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html - অথবা আপনি নীচের উদাহরণগুলি সহ অনুসরণ করতে পারেন (সমস্ত পরীক্ষা করা হয় এবং কাজ):

একটি নতুন ফাইল তৈরি করতে:

এই ফাইলে আমাদের দুটি সারি থাকবে, একটি শিরোনাম সারি এবং ডেটা সারি, খুব সাধারণ সিএসভি:

require "csv"
CSV.open("file.csv", "wb") do |csv|
  csv << ["animal", "count", "price"]
  csv << ["fox", "1", "$90.00"]
end

ফলাফল, নিম্নলিখিত ফাইলগুলির সাথে "file.csv" নামে একটি ফাইল:

animal,count,price
fox,1,$90.00

কীভাবে কোনও সিএসভিতে ডেটা যুক্ত করতে হয়

উপরের মত প্রায় একই সূত্রটি কেবল "wb" মোড ব্যবহার না করে আমরা "a +" মোড ব্যবহার করব। এগুলির বিষয়ে আরও তথ্যের জন্য এই স্ট্যাকের ওভারফ্লো উত্তরটি দেখুন: রুবি ফাইল.পেন মোড এবং বিকল্পগুলি কী কী?

CSV.open("file.csv", "a+") do |csv|
  csv << ["cow", "3","2500"]
end

এখন যখন আমরা আমাদের ফাইল সিএসভি খুলি তখন আমাদের রয়েছে:

animal,count,price
fox,1,$90.00
cow,3,2500

আমাদের সিএসভি ফাইল থেকে পড়ুন

এখন আপনি কীভাবে কোনও ফাইল অনুলিপি করতে এবং লিখতে জানেন, একটি সিএসভি পড়তে এবং অতএব, আপনি ঠিক কীভাবে ম্যানিপুলেশনের জন্য ডেটা ধরেন:

CSV.foreach("file.csv") do |row|
  puts row #first row would be ["animal", "count", "price"] - etc.
end

অবশ্যই, এটি একশটি বিভিন্ন উপায়ে যেমন আপনি এই মণিটি ব্যবহার করে কোনও সিএসভি থেকে তথ্য টানতে পারেন তার মতো। আরও তথ্যের জন্য, আমি এখনই ডক্সগুলি দেখার পরামর্শ দিচ্ছি যে আপনার প্রাইমার রয়েছে: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html


আমি যদি এখনই না লিখে খোলার ইচ্ছা করি? শুধু ব্লক ব্যবহার করবেন না?
ডোনাটো

কপি এবং পেস্ট সক্ষম কোড জন্য ধন্যবাদ! - এটি লিখতে খুব অলস।
ডোমিনিকএঞ্জারার

এটি একটি নতুন সিএসভি তৈরির অন্তর্ভুক্ত, তবে তারপরে উপলব্ধ কমনসগুলির একটি সাবসেট অনুলিপি করার জন্য অনুরোধকে সম্বোধন করার পরিবর্তে পুরো সারিগুলি যুক্ত করা এবং পড়ার তথ্যগুলিতে যায় অথবা তাদের মানগুলিতে পরিবর্তন বা যুক্ত করতে পারে। আমার কাছে ওপি হিসাবে একই ধরণের প্রজেক্ট রয়েছে এবং ডকুমেন্টেশন বা এই উত্তরটি দ্বারা সহায়তা করা হয়নি, সুতরাং আশা করি আমি একবার এটি বের করে নিলে আরও নির্দিষ্ট উত্তর সরবরাহ করতে এখানে ফিরে আসতে পারব।
টাইলার জেমস ইয়ং

4

আপনি কি রুবির সিএসভি ক্লাস দেখেছেন? এটি বেশ ব্যাপক বলে মনে হচ্ছে। এটি এখানে দেখুন: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html


4
লিঙ্কের জন্য ধন্যবাদ। আমি এটি উল্লেখ করা হবে। আমি কি রুবির মাধ্যমে সিএসভি ফাইল সম্পাদনা করতে পারি? মানে আমি কি সিএসভিতে একটি কলাম মান আপডেট করতে পারি? পরে কেবল প্রয়োজনীয় কলামগুলির হ্যাশ পাবেন?
ব্যবহারকারী 1718712

0

আপনি সম্ভবত CSV::parseরুবিকে আপনার সিএসভি ডেটার টেবিল হিসাবে বুঝতে এবং শিরোনামের মাধ্যমে মানগুলিতে সহজে অ্যাক্সেস সক্ষম করতে সহায়তা করতে ব্যবহার করতে চাইবেন ।

দুর্ভাগ্যক্রমে, পদ্ধতিটিতে উপলভ্য ডকুমেন্টেশনCSV::parse এটি খুব সহজে পরিষ্কার করে না যে কীভাবে এটি এই উদ্দেশ্যে ব্যবহার করা যায়।

আমারও অনুরূপ একটি কাজ ছিল এবং সিএসভি শ্রেণীর নথিপত্র বা এখান থেকে এটিকে নির্দেশ করে দেওয়া উত্তরগুলির চেয়ে রুবিগুইডস.কম- এ রুবির সাথে সিএসভি ফাইলগুলি কীভাবে পড়ুন এবং পার্স করবেন তা আরও অনেক কিছু সাহায্য করেছিল ।

আমি পৃষ্ঠাটি সম্পূর্ণরূপে পড়ার পরামর্শ দিচ্ছি। গুরুত্বপূর্ণ অংশটি প্রদত্ত সিএসভিকে কোনও CSV::Tableবস্তুতে ব্যবহার করে এটি ব্যবহার করে:

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

ক্লাসে এখন ডকুমেন্টেশনCSV::Table রয়েছে , তবে আবার আপনাকে রুবিগাইডস ডটকম পৃষ্ঠায় সুস্পষ্ট উদাহরণ দ্বারা আরও সহায়তা করা যেতে পারে। একটি জিনিস আমি হাইলাইট করব তা হল আপনি যখন .parseশিরোনামের প্রত্যাশা করতে বলবেন , ফলস্বরূপ সারণীটি প্রথম সারিটির ডাটাটিকে সারি হিসাবে বিবেচনা করবে [0]

আপনি সম্ভবত .by_colআপনার নতুন Tableঅবজেক্টের জন্য উপলব্ধ পদ্ধতিটিতে বিশেষভাবে আগ্রহী হবেন । এটি আপনাকে ইনপুট এবং / অথবা আউটপুটে বিভিন্ন কলাম সূচী অবস্থানগুলির মাধ্যমে পুনরাবৃত্তি করতে এবং একটির থেকে অন্যটিতে অনুলিপি করতে বা আউটপুটে একটি নতুন মান যুক্ত করার অনুমতি দেবে। যদি এটি কাজ করে তবে আমি ফিরে এসে একটি উদাহরণ পোস্ট করব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.