dcsv

Crates.iodcsv
lib.rsdcsv
version0.3.4-beta.2
sourcesrc
created_at2022-05-10 15:18:39.496901
updated_at2024-01-21 09:53:02.760526
descriptionDyanmic csv reader,writer,editor
homepagehttps://github.com/simhyeon/dcsv
repositoryhttps://github.com/simhyeon/dcsv
max_upload_size
id584040
size6,364,953
Simhyeon (Simhyeon)

documentation

README

dcsv

Dynamic csv reader, editor, and writer library.

If you use structured csv data, use csv crate

If you want higher wrapper around csv editing, use ced

changes

Feature

  • Read csv which has undecided format
  • Optionally validate csv values
  • Edit csv values
  • Write to file
  • Print to table

Basic usage

Refer Usage for more usages. Docs.rs is also useful in general.

Include dcsv in cargo.toml file first.

[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);

Why?

Most of the time, well known csv crate is much more performant and eaiser to use because csv format doesn't change a lot. However there are cases where program expects undecided csv formats and contents, which means program has to ensure every value is compatible with expected standard. In such case, csv crate's type guarantee is painful to handle with.

See the examples for usages.

Not yet

  • Fully comptaible with csv spec
Commit count: 97

cargo fmt