8 个版本 (4 个重大更新)
0.5.1 | 2024 年 4 月 21 日 |
---|---|
0.5.0 | 2024 年 1 月 13 日 |
0.4.1 | 2023 年 11 月 29 日 |
0.4.0 | 2023 年 10 月 30 日 |
0.1.0 | 2023 年 9 月 5 日 |
在 编码 中排名 1554
每月下载 91 次
在 8 个crate中使用(直接使用 4 个)
250KB
6K SLoC
IROX CSV 编码/解码器
受 Python 的 csv
模块启发,一个非常基础的 csv 读取和写入模块。
该库的主要用途是与无结构、结构可变或不明确的结构数据交互。因此,你可能希望使用更强大、实现更好的 csv
crate。
目标
非目标
示例
- 直接迭代
use irox_csv::error::CSVError;
fn iter_example() -> Result<(), CSVError> {
let mut input = irox_csv::CSVReader::new(std::io::stdin());
loop {
// iterate over each line of the input
let line : Option<Vec<String>> = input.read_line()?;
match line {
Some(fields) => {
// Use the individual fields of the CSV line
println!("{:?}", fields); // fields : Vec<String>
}
None => {
// EOF
break;
}
}
}
Ok(())
}
- 映射迭代
use irox_csv::error::CSVError;
fn map_example() -> Result<(), CSVError> {
let mut maps = irox_csv::CSVMapReader::new(std::io::stdin());
loop {
// iterate over each line of the input
let maybe_row : Option<Row> = maps.next_row()?;
match maybe_row {
Some(row) => {
// Use the individual fields of the CSV line as a key-value map
// The keys are the column headers found in the first row, the values are the matching row entry
let map = row.into_map_lossy();
println!("{:?}", map); // map : BTree<column:String, rowVal:String>
}
None => {
// EOF
break;
}
}
}
Ok(())
}
- 使用映射写入 CSV 文件
fn map_writer_example() -> Result<(), CSVError> {
let mut buf: Vec<u8> = Vec::new();
let mut writer = CSVWriterBuilder::new()
.with_columns(&["first", "second", "third"])
.build(&mut buf);
let mut map = BTreeMap::new();
map.insert("first".to_string(), "firstColFirstRowVal".to_string());
map.insert("second".to_string(), "secondColFirstRowVal".to_string());
map.insert("third".to_string(), "thirdColFirstRowVal".to_string());
writer.write_fields(&map)?;
map.clear();
map.insert("first".to_string(), "firstColSecondRowVal".to_string());
map.insert("second".to_string(), "secondColSecondRowVal".to_string());
map.insert("third".to_string(), "thirdColSecondRowVal".to_string());
writer.write_fields(&map)?;
Ok(())
}
将产生一个缓冲区
first,second,third
firstColFirstRowVal,secondColFirstRowVal,thirdColFirstRowVal
firstColSecondRowVal,secondColSecondRowVal,thirdColSecondRowVal