✍️ CSV داده جدولی را به متن تبدیل میکند. معمولاً خط اول نام ستونهاست و خطهای بعدی رکوردها هستند. جداکننده در مثالهای این دوره کامای انگلیسی است. اما یک سلول خودش هم میتواند کاما داشته باشد؛ آن سلول داخل نقلقول قرار میگیرد تا جداکننده داخلی با مرز ستون اشتباه نشود.
import csv
import io
text = 'product,quantity\n"دفتر, آبی",2\nمداد,3\n'
rows = list(csv.reader(io.StringIO(text)))
print(rows[1]) # ['دفتر, آبی', '2']
csv.reader قواعد قالب را میشناسد و سلول نقلقولدار را یک مقدار میبیند. io.StringIO در این مثال یک جریان متنی از رشته میسازد؛ در تمرینها همین داده را در فایل نمونه مینویسیم و فایل را به reader میدهیم. هنگام باز کردن فایل CSV از newline='' و UTF-8 استفاده میکنیم تا مدیریت پایان خط با ماژول csv هماهنگ باشد.
خروجی سلولها هنوز رشته است؛ دو بودن quantity به معنی عدد صحیح بودن نوع آن نیست. خطای رایج، line.split(',') است که نام «دفتر, آبی» را به دو ستون جعلی تقسیم میکند. از parser قالب استفاده کن تا بعداً اعتبارسنجی را روی ستونهای درست انجام بدهی.
فعالیت شما
ساختار header، رکورد و سلول نقلقولدار CSV را از مثال بخوان؛ csv.reader رشتههای ستونها را تحویل میدهد و کامای داخل نقلقول ستون تازه نیست.