簡體   English   中英

Python csv reader for row in reader給出語法錯誤

[英]Python csv reader for row in reader gives syntax error

Django/Python 新手。 我需要為 CSV 文件編寫一個導入腳本來播種一些數據(不使用固定裝置,因為那是基於 JSON 而不是 CSV)。

這有效:

import csv
from datetime import datetime
from django.utils.timezone import make_aware
from django.core.management.base import BaseCommand
from chatterbox.models import Organisation, Course, Student

class Command(BaseCommand):
    def handle(self, **options):

      CSV_PATH = './students_AEKI.csv'

      Student.objects.filter(organisation__name__exact="AEKI").delete()

      with open(CSV_PATH) as file:
        file.readline() # skip the header
        csv_reader = csv.reader(file, delimiter=',')
        org = Organisation.objects.filter(name="AEKI")

        for row in csv_reader:
          _, Student.objects.get_or_create(
              first_name=row[0],
              last_name=row[1],
              email=row[2],
              organisation=org[0],
              enrolled=row[4],
              last_booking=row[5],
              credits_total=row[6],
              credits_balance=row[7],
              )

這不起作用:

import csv
from datetime import datetime
from django.utils.timezone import make_aware
from django.core.management.base import BaseCommand
from chatterbox.models import Organisation, Course, Student

class Command(BaseCommand):
    def handle(self, **options):

      CSV_PATH = './students_AEKI.csv'

      Student.objects.filter(organisation__name__exact="AEKI").delete()

      with open(CSV_PATH) as file:
        file.readline() # skip the header
        csv_reader = csv.reader(file, delimiter=',')
        org = Organisation.objects.filter(name="AEKI")

        for row in csv_reader:
          enrolled_utc = make_aware(datetime.strptime(row[4], '%Y-%m-%d'))
          last_booking_utc = make_aware(datetime.strptime((row[5], '%Y-%m-%d'))
          _, Student.objects.get_or_create(
              first_name=row[0],
              last_name=row[1],
              email=row[2],
              organisation=org[0],
              enrolled=enrolled_utc,
              last_booking=last_booking_utc,
              credits_total=row[6],
              credits_balance=row[7],
              )

“_”處的語法錯誤。

在表中創建數據之前,我需要對數據進行一些操作(例如,將時區添加到日期字段)。 那么第二版有什么問題呢?

“_”處有語法錯誤。 刪除尾隨字符。

此行還有一個額外的括號:

last_booking_utc = datetime.strptime((row[5], '%Y-%m-%d')

        for row in csv_reader:
          enrolled_utc = make_aware(datetime.strptime(row[4], '%Y-%m-%d'))
          last_booking_utc = make_aware(datetime.strptime((row[5], '%Y-%m-%d'))
          _, Student.objects.get_or_create(
              first_name=row[0],
              last_name=row[1],
              email=row[2],
              organisation=org[0],
              enrolled=enrolled_utc,
              last_booking=last_booking_utc,
              credits_total=row[6],
              credits_balance=row[7],
              )

        for row in csv_reader:
            enrolled_utc = make_aware(datetime.strptime(row[4], '%Y-%m-%d'))
            last_booking_utc = make_aware(datetime.strptime(row[5], '%Y-%m-%d'))
            Student.objects.get_or_create(
              first_name=row[0],
              last_name=row[1],
              email=row[2],
              organisation=org[0],
              enrolled=enrolled_utc,
              last_booking=last_booking_utc,
              credits_total=row[6],
              credits_balance=row[7],
              )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM