12个不稳定版本 (3个重大更改)
0.8.2 | 2024年7月2日 |
---|---|
0.8.1 | 2024年7月2日 |
0.7.1 | 2024年5月6日 |
0.7.0 | 2024年3月13日 |
0.5.2 | 2023年10月9日 |
1086 在 解析器实现 中
81 每月下载次数
69KB
1K SLoC
CSV Perusal
A cargo crate,用于读取CSV文件并返回文件内容,并带有相应的数据类型。受Calamine的启发,此包旨在使处理CSV文件更容易。
CSV Perusal旨在将CSV文件中的值上传到关系型数据库。打开CSV文件时返回的是一个二维向量,其中的CSVType
枚举器,每个内部向量作为不同的行。
CSV Perusal非常简单且易于使用。如果您有一个文件路径并且只想解析值,则您需要查找的是 open_csv()
。如果您有一个特定的方式使用csv
crate打开CSV文件,并且有一个ByteRecords
的向量,或者有一个String
或&str
的两维向量,那么您将想要使用get_csv_types()
方法。
示例
use csv_perusal::{open_csv, CSVType};
fn main() {
let path = "test_data/DATA10ROWS.csv";
let grid = open_csv(path).unwrap();
grid.iter().for_each(|row| {
row.iter().for_each(|cell| {
match cell {
CSVType::Int(val) => print!("INT:{:?}, ", val),
CSVType::Float(val) => print!("FLOAT:{:?}, ", val),
CSVType::String(val) => print!("STRING:{:?}, ", val),
CSVType::Date(val) => print!("DATE:{:?}, ", val),
CSVType::Time(val) => print!("TIME:{:?}, ", val),
CSVType::DateTime(val) => print!("DATETIME:{:?}, ", val),
CSVType::Error(err) => print!("ERROR:{:?}", err),
CSVType::Empty => print!("NONE, "),
}
});
print!("\n");
});
}
输入
id | 货币 | 百分比 | 日期 | 日期时间 | 12小时制时间 | 24小时制时间 |
---|---|---|---|---|---|---|
1 | $8.70 | 34.1% | 5/28/2023 | 10/25/2023 19:48 | 下午5:31 | 23:02 |
2 | $6.08 | 90.10% | 2/7/2023 | 11/4/2023 1:58 | 上午6:47 | 14:11 |
3 | $6.44 | 50.10% | 7/24/2023 | 7/4/2023 1:04 | 中午12:32 | 17:27 |
4 | $4.99 | 15.60% | 12/29/2022 | 12/4/2023 11:34 | 下午5:17 | 4:53 |
结果
STRING: "id", STRING: "Money", STRING: "Percent", STRING: "Date", STRING: "DateTime", STRING: "Time12h", STRING: "Time24h",
-----------------------------
INT: 1, FLOAT: 8.7, FLOAT: 0.341, DATE: "2023-05-28", DATETIME: "2023-10-25 19:48:00", TIME: "17:31:00", TIME: "23:02:00",
INT: 2, FLOAT: 6.08, FLOAT: 0.901, DATE: "2023-02-07", DATETIME: "2023-11-04 01:58:00", TIME: "06:47:00", TIME: "14:11:00",
INT: 3, FLOAT: 6.44, FLOAT: 0.501, DATE: "2023-07-24", DATETIME: "2023-07-04 01:04:00", TIME: "12:32:00", TIME: "17:27:00",
INT: 4, FLOAT: 4.99, FLOAT: 0.156, DATE: "2022-12-29", DATETIME: "2023-12-04 11:34:00", TIME: "17:17:00", TIME: "04:53:00",
注意事项
- 百分比和货币会被转换为浮点数
- 时间和日期将由Chrono格式化
- 它将首先尝试
mm/dd/yyyy
和yyyy/mm/dd
格式,但如果月份值大于 12,则将改为dd/mm/yyyy
或yyyy/dd/mm
。请注意,如果您有dd/mm/yyyy
格式的日期,例如 2/11/2024,将被读取为 2 月 11 日而不是 11 月 2 日。 - 将以
yyyy-mm-dd
的格式输出日期,但您可以使用 Chrono 包来更改格式。 - 当前解析:
mm/dd/yyyy
、dd/mm/yyyy
、yyyy/mm/dd
、yyyy/dd/mm
、m/dd/yyyy
、mm/d/yyyy
、dd/m/yyyy
、yyyy/mm/d
、yyyy/dd/m
、yyyy/m/dd
、m/d/yyyy
、yyyy/m/d
、mm/dd/yy
、dd/mm/yy
、m/dd/yy
、mm/d/yy
、dd/m/yy
、yy/m/dd
、yy/mm/d
、yy/dd/m
、m/d/yy
、yy/m/d
。
- 它将首先尝试
- 时间是以 24 小时制表示,但也可以使用 Chrono 改为 12 小时制。
依赖项
~6–8.5MB
~140K SLoC