שלום אורח התחבר

איך קוראים קובץ CSV מתוך פייתון

נושאים:יומי

המודול csv של פייתון נותן לנו פיתרון ממש פשוט כשאנחנו רוצים לקרוא קובץ CSV ולגשת לשדות שלו מתוך תוכנית פייתון. שימו לב לתוכנית הדוגמא הבאה שקוראת קובץ בשם my.csv:

import csv
with open('my.csv', encoding='utf8', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row[-1])

נקרא את התוכנית שורה אחר שורה:

  1. הפקודה import מייבאת את המודול csv לתוכנית. מודול זה מגיע עם פייתון ולא דורש שום התקנה מיוחדת. המודול מספק לנו ממשק לעבודה עם מידע בפורמט CSV.

  2. הפקודה השניה פותחת את הקובץ my.csv ושומרת את הקישור אליו במשתנה בשם csvfile. בגלל שהקובץ נפתח בתוך בלוק with, בסיום הבלוק באופן אוטומטי הקובץ ייסגר בסיום הבלוק. מילת המפתח encoding תעזור לפייתון להתמודד עם קובץ בכל שפה ומילת המפתח newline גורמת לקובץ לא לטפל בשורות חדשות (כי המודול CSV יהיה זה שיטפל בהן).

  3. הפקודה השלישית יוצרת אוביקט מסוג CSV Reader. אוביקט זה מקבל חיבור לקובץ (או מידע דמוי-קובץ) ויאפשר לנו לקרוא את המידע שורה אחר שורה. האוביקט בעצם הופך את המידע מ"שורת טקסט" ל"רשימת ערכים".

  4. בפקודה הרביעית אנחנו רצים בלולאה על כל השורת ב Reader. כל שורה מתקבלת בתור רשימת ערכים למשתנה row.

  5. בפקודה החמישית בשביל הדוגמא אני מדפיס את התא האחרון בשורה.

העבודה דרך המודול CSV עדיפה על ניסיון לחלק את המידע לבד לתאים כיוון שמודול csv כבר מטפל בשבילנו במצב שתו ההפרדה (הפסיק) מופיע בתוך מרכאות בתוך אחד התאים. הוא גם מאפשר לקבוע מה יהיה תו ההפרדה ופרמטרים נוספים של הקריאה, ואפילו לטעון את המידע לתוך מילון במקום לתוך רשימה.

למידע נוסף על CSV Reader שווה להעיף מבט בתיעוד בקישור: https://docs.python.org/3.8/library/csv.html#id3

נ.ב. ועוד טיפ קטן הוא שאם אתם כבר עובדים עם Pandas יש לכם פקודה אחת שקוראת את כל ה CSV לתוך מבנה נתונים שנקרא Data Frame. מבנה זה יותר נוח לגישה ישירה למידע (קצת כמו טבלא באקסל) בהשוואה לקריאה שורה-שורה דרך פייתון. הנה אותה התוכנית בגירסת הפנדס שלה:

import pandas as pd
df = pd.read_csv('my.csv', sep=',')
for val in df.iloc[:,-1]:
    print(val)

 

מעדיפים לקרוא מהטלגרם? בקרו אותנו ב:@tocodeil

או הזינו את כתובת המייל וקבלו את הפוסט היומי בכל בוקר אליכם לתיבה:


נהניתם מהפוסט? מוזמנים לשתף ולהגיב