MOJO-CSV
开源地址 https://github.com/mzaks/mojo-csv
该库提供了根据 RFC-4180 以 CSV 格式读取和写入数据的工具
将数据写入 CSV 格式
为了将数据转换为CSV格式,用户需要创建一个实例。CsvBuilder
有两个实例化选项:CsvBuilder
使用列数初始化构建器CsvBuilder(3)
使用列名称初始化构建器CsvBuilder("a", "b", "c")
构建器成立后,可以通过以下 API 推送值:
fn push[D: DType](inout self, value: SIMD[D, 1]):
允许推送数值
fn push(inout self, s: String, consider_escaping: Bool = True):
允许推送字符串值,默认情况下将检查该值是否有特殊字符,以确定是否需要对其进行转义
fn push[T: AnyType, to_str: fn(v:T) -> String](inout self, value: T, consider_escaping: Bool = False):
允许推送任何类型,前提是将类型转换为编译时参数的函数,参数的作用如上所述,默认值设置为 FalseStringconsider_escaping
fn push_empty(inout self):
功能相同push("")
根据提供的列数,如果需要和需要,推送的值将被转义,并由 RFC-4180 或根据 RFC-4180 连接。 如果需要,允许用空值填充当前行。,``\r\nfn fill_up_row(inout self):
要获取 CSV 格式的数据,用户需要调用将返回所需字符串并销毁构建器。该方法在内部调用并追加到文件末尾,确保生成的字符串根据 RFC-4180 有效。fn finish(owned self) -> String:``finishfill_up_row\r\n
注意:
将字符串值设置为推送速度最多可慢 10 倍,但请确保生成的 CSV 有效。如果用户确定提供的字符串不包含特殊字符,则应将参数设置为consider_escaping``True``consider_escaping``False
读取 CSV 格式的数据
为了读取 CSV 字符串,用户需要使用该字符串实例化 a。默认情况下,将使用基于 SIMD 的标记化,这比非 SIMD 快约 20%。但是,用户可以通过将实例化参数设置为 来决定不使用基于 SIMD 的标记化。CsvTable``CsvTablewith_simdFalse
实例化后,用户可以通过访问字段和调用方法检查列数和行数。CsvTable``column_countfn row_count(self) -> Int:
为了从表中获取值,用户可以调用方法,该方法返回已未转义的字符串值。fn get(self, row: Int, column: Int) -> String: