使用键入.数据类读取器中的文字



我有一个csv文件,我想将其处理为数据类。我想检查一下我的数据集中的成绩是否只来自预先指定的列表,如果不是这样的话,我想记录一个错误/警告。我的课看起来如下

from dataclasses import dataclass
from typing import Literal
grade_options = Literal['1A', '1B', '1C']
class Student:
name: str
age: int
grade: grade_options

我读取了csv文件(使用dataclass-csv库(,但是实例化这种类型的有问题

from dataclass_csv import DataclassReader
with open('students.csv', encoding="utf-8-sig") as read_csv:
reader = DataclassReader(read_csv, Student, delimiter=";")
students = [student for student in reader]

这将导致TypeError: Cannot instantiate typing.Literal

除了创建手动检查器来查看csv文件中的值是否为指定选项之外,还有其他选项吗?

我自己刚刚遇到这个问题。您必须使用扩展Enum的具体类。

基于";创建一个枚举类"在教程中:

from enum import Enum

class Grade(str, Enum):
_1a: '1A'
_1b: '1B'
_1c: '1C'
class Student:
name: str
age: int
grade: Grade

最新更新