جاري التحميل...

جدول نصي CSV

جدول CSV هو صفوف من النص. كل سطر يمثّل صفًّا واحدًا، والفاصلة تحدّد حافة الخليّة. في الصفحة السابقة وضعتَ القاموس على سطر واحد، أمّا هنا فالسطر نفسه هو الصف. لا يُفتح أي ملف؛ فالـ rows موجودة في صندوق نصي داخل الذاكرة.

كتابة الصفوف في الصندوق

python
import csv
from io import StringIO
box = StringIO()
pen = csv.writer(box)
pen.writerow(["name", "city"])
pen.writerow(["mina", "qom"])
pen.writerow(["lida", "yazd, iran"])
print(box.getvalue(), end="")

تعرض الشاشة ثلاثة أسطر:
name,city
mina,qom
lida,"yazd, iran"
السطر الأول فيه عنوانا العمودين name وcity، وليس ضيفًا. في السطر الثاني تمثّل mina وqom خليّتين. السطر الثالث فيه علامات اقتباس لأنّ المدينة نفسها تحتوي على فاصلة. التعليمة end="" تطلب من print ألّا تضيف سطرًا من عندها، فتتوقّف الشاشة عند السطر الثالث. وكان الصندوق قد انتهى أصلًا بفاصل سطر.

قراءة الخلايا من جديد

python
import csv
from io import StringIO
text = "name,city\nmina,qom\nlida,\"yazd, iran\"\n"
box = StringIO(text)
rows = list(csv.reader(box))
print(rows[1][0])
print(rows[2][1])

تعرض الشاشة mina ثم yazd, iran. يبدأ هذا البرنامج من الصفر ولا يشغّل الكاتب مرة أخرى. rows قائمة من الصفوف. rows[1][0] هي الخليّة الأولى من الصف الثاني، أي الضيف mina. و rows[2][1] هي المدينة. علامات الاقتباس ليست جزءًا من المدينة. ويبقى في الصف خليّتان فقط، وتبقى iran مع yazd.

لو قطعتَ السطر الثالث بنفسك عند كل فاصلة، لبدت iran خليّة ثالثة. أمّا القارئ فلا يقطع هناك. علامات الاقتباس تحدّد خليّة واحدة ثم تزول. لا وجود لـ open ولا لـ Path، ولا يُستخدم JSON، ولا يُحفظ شيء في ملف.

الصفحة التالية عن الوحدات. هذه الصفحة تكتب الـ rows فقط ثم تقرأ الخلايا من جديد.

الصفوف أولًا ثم الخلايا

خلاصة: الشاشة الأولى هي الأسطر الثلاثة؛ القارئ يعرض mina ثم yazd, iran؛ علامات الاقتباس ليست جزءًا من المدينة؛ لا يوجد ملف؛ والصفحة التالية عن الوحدات.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى