13次发布

0.3.4-beta.22024年1月21日
0.3.3 2023年12月22日
0.3.3-rc12023年11月28日
0.3.2 2022年8月18日
0.3.1 2022年6月30日

#446 in 文本处理

44 每月下载量
用于 4 个Crates (3 直接)

MIT/Apache

2MB
2K SLoC

dcsv

动态csv读取器、编辑器和写入器库。

如果你使用结构化csv数据,请使用 csv crate

如果你想要更高层次的csv编辑封装,请使用 ced

变更

功能

  • 读取格式未定的csv文件
  • 可选验证csv值
  • 编辑csv值
  • 写入文件
  • 打印到表格

基本用法

参考 用法 了解更多用法。Docs.rs在一般情况下也很有用。

首先在 cargo.toml 文件中包含 dcsv。

[dependencies]
dcsv = "*"
// Trait VCont is required to use many methods
use dcsv::{Reader, VirtualData, Value, VCont};
use std::fs::File;

let data: VirtualData = Reader::new()
    .use_delimiter(';')      // Default is comma
    .use_line_delimiter('|') // Default is '\n, \r\n'
    .data_from_stream(
        BufReader::new(
            File::open("file_name.csv")
                .expect("Failed to read file")
        )
    )
    .expect("Failed to retrieve csv value from file");

// import VCont trait before use
// Refer docs.rs for various VirtualData methods
let value : Option<&Value> = data.get_cell(1,1);

为什么?

大多数时候,知名的csv crate性能更好且更易用,因为csv格式变化不大。然而,有些情况下程序期望处理未定的csv格式和内容,这意味着程序必须确保每个值都与期望的标准兼容。在这种情况下,csv crate的类型保证处理起来很痛苦。

请参阅用法示例。

尚未

  • 完全兼容csv规范

依赖项

~2.4–3.5MB
~54K SLoC