- Add relevant links to all READMEs and source code - Resolve clippy lints czv: - Add more docs for top-level items - Add suggestion to use builder methods instead of functions - Disable slice and slice tests until operation is complete czv-wasm: - Use tsify_next for allowing objects as parameters - Add nodejs example and instructions
3.6 KiB
czv
czv is CSV content manipulation/analysis libraries with support for Rust, Python, and WebAssembly (JavaScript and TypeScript).
Links
- czv GitHub repository: https://github.com/rzmk/czv
- Rust: crates.io/crates/czv (source code)
- WebAssembly (JavaScript/TypeScript): npmjs.com/package/czv (source code)
- Python: pypi.org/project/czv (source code)
Installation and examples
In the following examples we'll get the total number of rows in the CSV data including the header row.
Rust
cargo install czv
use czv::{RowCount, Result};
fn main() -> Result<()> {
let data = "\
fruits,price
apple,2.50
banana,3.00
strawberry,1.50
";
let output = RowCount::new()
.file_data(data)
.include_header_row(true)
.execute()?;
println!("{output}"); // 4
Ok(())
}
JavaScript/TypeScript (WebAssembly)
bun install czv
Or use npm, pnpm, or yarn instead of bun.
import init, * as czv from "czv";
// Must run `await init()` or `initSync()` first for web use
await init();
const data = `fruits,price
apple,2.50
banana,3.00
strawberry,1.50`;
const output = czv.rowCount({
file_data: data,
include_header_row: true,
});
console.log(output);
Python
pip install czv
import czv
data = """fruits,price
apple,2.50
banana,3.00
strawberry,1.50"""
output = czv.row_count(file_data=data)
print(output)
Available operations
| czv (Rust) | czv-wasm (JS/TS) | czv-python | Summary |
|---|---|---|---|
count::RowCount |
rowCount |
count.row_count |
Get the number of rows |
count::ColumnCount |
columnCount |
count.column_count |
Get the number of columns |
Development
Each package has its own README.md with more info for that particular package.
You may generate docs with:
cargo doc --no-deps --workspace --open
Notes
czv is inspired by the command-line tools xsv and qsv, but czv is not intended to cover all of their commands or features.
Not all provided libraries may be in sync at a given time. See the available operations table for a common operation list between libraries (not all implementations for a given operation may be in sync either, for example they may not have the same builder/function arguments).
Here are a few expected features for each provided operation:
- czv (Rust)
- Provide both a builder (recommended and common for conditional parameters) and a function
- Provide documentation (docstrings) in Markdown format
- czv-wasm (Web, JavaScript and TypeScript)
- Use camelCase for exported functions
- Include common browser support to run in-browser
- Provide documentation (dosctrings) in TSDoc format
- czv-python
- Provide documentation (docstrings) and type hints for IDEs when developers are using the Python library (sourced from czv-python/czv.pyi) in Markdown format