خواندن فایلهای CSV در پایتون: راهنمای جامع
فایلهای CSV (Comma Separated Values) یکی از رایجترین فرمتها برای ذخیره و انتقال دادههای جدولی هستند. پایتون با ارائه ابزارهای قدرتمند، خواندن و پردازش این فایلها را بسیار آسان میکند. این مقاله به بررسی روشهای مختلف خواندن فایلهای CSV در پایتون میپردازد و با ارائه مثالهای عملی، به شما کمک میکند تا به طور کامل با این موضوع آشنا شوید. این آموزش در دسته بندی ‘مبانی پایتون’ قرار میگیرد و برای افراد مبتدی و متوسط مناسب است.
چرا فایلهای CSV؟
فایلهای CSV به دلیل سادگی و قابلیت سازگاری بالا، در بسیاری از کاربردها مورد استفاده قرار میگیرند. برخی از مزایای استفاده از فایلهای CSV عبارتند از:
- سادگی: فایلهای CSV ساختار بسیار سادهای دارند و به راحتی قابل خواندن و نوشتن هستند.
- قابلیت سازگاری: این فایلها با اکثر برنامهها و سیستمعاملها سازگار هستند.
- حجم کم: فایلهای CSV معمولاً حجم کمتری نسبت به سایر فرمتهای داده دارند.
- قابلیت انتقال آسان: به دلیل فرمت متنی، انتقال فایلهای CSV بین سیستمهای مختلف بسیار آسان است.
ماژول CSV در پایتون
پایتون یک ماژول داخلی به نام csv دارد که برای کار با فایلهای CSV طراحی شده است. این ماژول شامل توابعی برای خواندن، نوشتن و پردازش دادههای CSV است. برای استفاده از این ماژول، ابتدا باید آن را وارد (import) کنید:
import csv
روشهای خواندن فایل CSV
ماژول csv چندین روش برای خواندن فایلهای CSV ارائه میدهد. در ادامه به بررسی رایجترین این روشها میپردازیم:
1. استفاده از csv.reader
تابع csv.reader یک شیء reader ایجاد میکند که به شما امکان میدهد سطر به سطر فایل CSV را بخوانید. هر سطر به صورت یک لیست از رشتهها برگردانده میشود که هر عنصر آن، یک فیلد در فایل CSV است.
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
header = next(reader) # خواندن سطر اول به عنوان هدر
for row in reader:
print(row)
در این مثال:
open('data.csv', 'r', encoding='utf-8')فایلdata.csvرا در حالت خواندن (read) باز میکند.encoding='utf-8'برای پشتیبانی از کاراکترهای فارسی و سایر کاراکترهای غیر ASCII ضروری است.csv.reader(file)یک شیء reader ایجاد میکند که فایل را سطر به سطر میخواند.next(reader)سطر اول فایل را میخواند و آن را به عنوان هدر (header) در نظر میگیرد.- حلقه
for row in reader:بقیه سطرها را میخواند و هر سطر را به صورت یک لیست چاپ میکند.
2. استفاده از csv.DictReader
تابع csv.DictReader یک شیء reader ایجاد میکند که هر سطر فایل CSV را به صورت یک دیکشنری برمیگرداند. کلیدهای دیکشنری، هدرهای فایل CSV هستند و مقادیر آن، مقادیر مربوط به هر فیلد در آن سطر هستند.
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['نام'], row['سن'], row['شهر'])
در این مثال:
csv.DictReader(file)یک شیء reader ایجاد میکند که فایل را سطر به سطر میخواند و هر سطر را به صورت یک دیکشنری برمیگرداند.row['نام']،row['سن']وrow['شهر']به ترتیب مقادیر مربوط به فیلدهای ‘نام’، ‘سن’ و ‘شهر’ در هر سطر را چاپ میکنند.
3. تعیین جداکننده (Delimiter)
به طور پیشفرض، تابع csv.reader و csv.DictReader از کاما (,) به عنوان جداکننده استفاده میکنند. اگر فایل CSV شما از جداکننده دیگری استفاده میکند (مانند سمیکالن (;) یا تب (t))، میتوانید آن را با استفاده از پارامتر delimiter مشخص کنید.
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file, delimiter=';')
for row in reader:
print(row)
4. تعیین علامت نقل قول (Quotechar)
اگر فیلدهای فایل CSV شما شامل جداکننده هستند و با علامت نقل قول (مانند دابل کوتیشن (")) محصور شدهاند، میتوانید علامت نقل قول را با استفاده از پارامتر quotechar مشخص کنید.
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file, quotechar='"')
for row in reader:
print(row)
5. مدیریت خطاها
هنگام خواندن فایلهای CSV، ممکن است با خطاها مواجه شوید (مانند فایل وجود ندارد، فرمت نامعتبر و غیره). برای مدیریت این خطاها، میتوانید از بلوکهای try-except استفاده کنید.
import csv
try:
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
except FileNotFoundError:
print("فایل مورد نظر یافت نشد.")
except Exception as e:
print(f"خطایی رخ داد: {e}")
مثال کاربردی: خواندن و پردازش دادههای CSV
فرض کنید یک فایل CSV به نام students.csv داریم که شامل اطلاعات دانشجویان (نام، نام خانوادگی، سن، معدل) است. میخواهیم اطلاعات دانشجویانی که معدل آنها بیشتر از 17 است را چاپ کنیم.
import csv
with open('students.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
try:
معدل = float(row['معدل'])
if معدل > 17:
print(f"نام: {row['نام']}, نام خانوادگی: {row['نام خانوادگی']}, معدل: {معدل}")
except ValueError:
print(f"خطا در تبدیل معدل به عدد: {row['معدل']}")
در این مثال:
float(row['معدل'])مقدار معدل را از رشته به عدد اعشاری تبدیل میکند.if معدل > 17:بررسی میکند که آیا معدل دانشجو بیشتر از 17 است یا خیر.print(f"نام: {row['نام']}, نام خانوادگی: {row['نام خانوادگی']}, معدل: {معدل}")اطلاعات دانشجویانی که معدل آنها بیشتر از 17 است را چاپ میکند.- بلوک
try-except ValueErrorبرای مدیریت خطاهایی که ممکن است در هنگام تبدیل معدل به عدد رخ دهد، استفاده شده است.
نکات مهم
- همیشه فایل CSV را با استفاده از
encoding='utf-8'باز کنید تا از پشتیبانی از کاراکترهای فارسی و سایر کاراکترهای غیر ASCII اطمینان حاصل کنید. - هنگام استفاده از
csv.DictReader، مطمئن شوید که هدرهای فایل CSV با نام فیلدهای مورد نظر شما مطابقت دارند. - برای مدیریت خطاها، از بلوکهای
try-exceptاستفاده کنید. - در صورت نیاز، جداکننده و علامت نقل قول را با استفاده از پارامترهای
delimiterوquotecharمشخص کنید.
با استفاده از این راهنما، میتوانید به راحتی فایلهای CSV را در پایتون خوانده و پردازش کنید. ماژول csv ابزارهای قدرتمندی را برای کار با این فرمت داده ارائه میدهد و به شما کمک میکند تا به طور موثر با دادههای جدولی کار کنید.

بدون دیدگاه