跳转到主要内容

解析CSV文件的最简单方法

项目描述

Classy CSV

Classy CSV是解析CSV文件的最简单方法;你只需一个dataclass就能接近你的数据。

Classy CSV的主要用途是将你控制的内部应用程序生成的表格数据序列化和反序列化。通过创建一个描述你的CSV数据结构的dataclass,你可以无缝地在CSV文件和Python对象之间进行转换。

数据将按数组结构结构数组的方式读取,具体取决于你的数据表示。有关详细信息,请参阅API部分。

目标和非目标

目标

  • 易用性: Classy CSV的主要目标是提供一个简单直观的方式来解析和序列化CSV文件,使用Python的内置dataclass机制。
  • 类型安全和兼容性: Classy CSV设计得可以与类型提示、linters和pyright、mypy等语言服务器协议很好地配合。这确保了您编写的代码是类型安全的,并且可以使用标准的Python工具进行检查。
  • 无依赖项: 无需担心依赖项问题。

非目标

  • 性能: Classy CSV不是针对高性能优化的。它旨在用于小型CSV文件。
  • 错误处理: Classy CSV不是设计来优雅地处理格式错误的CSV文件的。它假定输入的CSV文件是良好的。

安装

您可以使用pip安装Class CSV

pip install classy-csv

,或者您可以直接将classy_csv/classy_csv.py复制到您的项目中并立即开始使用!

API

Classy CSV公开以下函数

  • CSVLine: 表示CSV文件中单行的基数据类。数据类的每个属性对应CSV文件中的一列。可以为每个属性定义可选的解析器和序列化器。
  • CSVColumns: 表示CSV文件中列的基数据类,作为列表。数据类的每个属性对应CSV文件中的一列,并且必须是列表。可以为每个属性定义可选的解析器和序列化器。使用此类的列格式加载数据将返回为数组结构
  • csvfield: 一个辅助函数,用于向CSVLineCSVColumns中的字段添加解析器和序列化器配置。它的工作方式类似于dataclass.field,但提供了解析和序列化CSV数据的额外参数。它也接受field接受的全部参数。
  • dump: 将数据序列化为CSV格式的文件。数据可以是CSVLine对象列表或单个CSVColumns对象。
  • load: 从CSV格式的文件加载数据到CSVLine对象列表或单个CSVColumns对象,具体取决于提供的数据类类型。
  • dumpsloads:dumpload相同,但它们不是写入文件句柄或从中读取,而是生成和从字符串表示加载。

示例

from pathlib import Path
import dataclasses as dc
from classy_csv import CSVLine, CSVColumns, csvfield, dump, load, loads, dumps

@dc.dataclass
class CustomerData(CSVLine):
    name: str
    age: int = csvfield(parser=int)
    height_m: float = csvfield(parser=float, serializer=lambda x: f"{x:.2f}")
    weight_kg: float = csvfield(parser=float)

rows = [
    CustomerData(name="Jane", age=42, height_m=1.65, weight_kg=58),
    CustomerData(name="Joe", age=36, height_m=1.75, weight_kg=75),
]

# It's important to open files with `newline=""`!
with Path("./example.csv").open(mode="w", newline="") as csvfile:
    dump(csvfile, rows)

with Path("./example.csv").open(mode="r", newline="") as csvfile:
    loaded_rows = load(csvfile, CustomerData)

print(loaded_rows)
# Output: [
#  CustomerData(name='Jane', age=42, height_m=1.65, weight_kg=58),
#  CustomerData(name='Joe', age=36, height_m=1.75, weight_kg=75),
# ]

更多示例可以在examples/文件夹下找到。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

classy_csv-0.1.2.tar.gz (7.5 kB 查看哈希值)

上传时间

构建分发

classy_csv-0.1.2-py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面