التعامل مع CSV
مكتبة csv
التعامل مع CSV درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما هو CSV؟
يخزّن CSV (Comma-Separated Values) البيانات الجدولية كنص عادي، بحيث يمثّل كل سطر صفًا وتفصل الفواصل بين الحقول. وتقرأ مكتبة csv القياسية في Ruby هذه البيانات وتكتبها.
require 'csv'
row = CSV.parse_line('Alice,30,Engineer')
p rowتحليل سلسلة CSV
يحوّل CSV.parse سلسلة CSV متعددة الأسطر إلى مصفوفة من مصفوفات الصفوف.
require 'csv'
data = "name,age\nAlice,30\nBob,25"
rows = CSV.parse(data)
p rowsاستخدام العناوين
مرّر headers: true لكي يصبح الصف الأول أسماء الحقول، ولكي يتصرف كل صف مثل Hash.
require 'csv'
data = "name,age\nAlice,30"
CSV.parse(data, headers: true).each do |row|
puts(row['name'])
puts(row['age'])
endالتكرار على الصفوف
يمكنك التكرار على الصفوف المحلّلة كما تفعل مع أي مصفوفة، والوصول إلى الحقول باستخدام الفهرس.
require 'csv'
rows = CSV.parse("1,a\n2,b\n3,c")
rows.each { |r| puts "#{r[0]} -> #{r[1]}" }تحويل الأنواع
استخدم converters: :numeric لتحويل الحقول الرقمية تلقائيًا إلى Integers أو Floats.
require 'csv'
rows = CSV.parse("10,20\n30,40", converters: :numeric)
puts(rows[0][0] + rows[1][1])إنشاء CSV
ينشئ CSV.generate سلسلة CSV. أضف المصفوفات إلى الكتلة لإضافة الصفوف.
require 'csv'
out = CSV.generate do |csv|
csv << ['name', 'age']
csv << ['Alice', 30]
end
puts outالاقتباس والمحارف الخاصة
يضع CSV الحقول التي تحتوي على فواصل أو علامات اقتباس أو أسطر جديدة بين علامتي اقتباس تلقائيًا، لكي تبقى البنية سليمة.
require 'csv'
out = CSV.generate do |csv|
csv << ['note', 'Hello, world']
end
puts outفواصل مخصّصة
بالنسبة إلى الملفات المفصولة بعلامات تبويب أو بفواصل منقوطة، حدّد col_sep. ويتعامل ذلك مع TSV ونسخ CSV الأوروبية.
require 'csv'
rows = CSV.parse("a;b;c", col_sep: ';')
p rowsالكتابة إلى ملف
يكتب CSV.open مع الوضع 'w' الصفوف مباشرةً إلى ملف.
require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'people.csv')
CSV.open(path, 'w') do |csv|
csv << ['name', 'age']
csv << ['Carol', 28]
end
puts(File.read(path))القراءة من ملف
يحمّل CSV.read ملفًا كاملًا إلى مصفوفة من الصفوف، مع قبول الخيارات نفسها التي يقبلها parse.
require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'nums.csv')
File.write(path, "x,y\n1,2\n3,4")
rows = CSV.read(path, headers: true)
puts(rows.first['y'])جمع قيم عمود
مهمة شائعة: قراءة عمود وتجميع قيمه. اجمع بين العناوين والتحويل الرقمي وmap.
require 'csv'
data = "item,price\npen,3\nbook,12"
total = CSV.parse(data, headers: true, converters: :numeric).sum { |r| r['price'] }
puts(total)اختبار سريع
أي خيار يتيح لك الوصول إلى حقول CSV باستخدام اسم العمود مثل row['age']؟
مراجعة: العمل مع CSV
يمكنك التعامل مع البيانات الجدولية:
- استخدم
CSV.parse/CSV.readللقراءة - استخدم
headers: trueللحصول على حقول مسمّاة - استخدم
converters: :numericللحصول على قيم ذات أنواع محددة - استخدم
CSV.generate/CSV.openللكتابة - استخدم
col_sepمع TSV وغيرها من الفواصل
require 'csv'
p CSV.parse_line('a,b,c')الأسئلة الشائعة
هل درس «التعامل مع CSV» مجاني؟
نعم — نص درس «التعامل مع CSV» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «التعامل مع CSV»؟
مكتبة csv تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التعامل مع CSV»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة JSON وكتابته
- التعامل مع CSV
- تهيئة YAML
- اختيار التنسيق