mirror of
https://github.com/rust-lang-nursery/rust-cookbook
synced 2025-02-16 12:18:27 +00:00
Read csv records with different delimiter
This commit is contained in:
parent
ca13c3b10c
commit
2df7875008
2 changed files with 54 additions and 4 deletions
|
@ -11,6 +11,7 @@
|
|||
| [Serialize records to CSV][ex-serialize-csv] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Serialize records to CSV using Serde][ex-csv-serde] | [![csv-badge]][csv] [![serde-badge]][serde] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Handle invalid CSV data with Serde][ex-invalid-csv] | [![csv-badge]][csv] [![serde-badge]][serde] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Read CSV records with different delimeter][ex-csv-delimiter] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] |
|
||||
|
||||
[ex-json-value]: #ex-json-value
|
||||
<a name="ex-json-value"></a>
|
||||
|
@ -469,7 +470,7 @@ struct Record {
|
|||
#
|
||||
# error_chain! {
|
||||
# foreign_links {
|
||||
# CsvError(csv::Error);
|
||||
# CsvError(csv::Error);
|
||||
# }
|
||||
# }
|
||||
|
||||
|
@ -492,6 +493,56 @@ fn run() -> Result<()> {
|
|||
# quick_main!(run);
|
||||
```
|
||||
|
||||
[ex-csv-delimiter]: #ex-csv-delimiter
|
||||
<a name="ex-csv-delimiter"></a>
|
||||
## Read CSV records with different delimeter
|
||||
|
||||
[![csv-badge]][csv] [![cat-encoding-badge]][cat-encoding]
|
||||
|
||||
Reads CSV records with [`delimiter`] other than ','
|
||||
|
||||
[`delimiter`]: https://docs.rs/csv/1.0.0-beta.3/csv/struct.ReaderBuilder.html#method.delimiter
|
||||
|
||||
```rust
|
||||
# #[macro_use]
|
||||
# extern crate error_chain;
|
||||
extern crate csv;
|
||||
extern crate serde;
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct Record {
|
||||
name: String,
|
||||
place: String,
|
||||
#[serde(deserialize_with = "csv::invalid_option")]
|
||||
id: Option<u64>,
|
||||
}
|
||||
|
||||
use csv::ReaderBuilder;
|
||||
#
|
||||
# error_chain! {
|
||||
# foreign_links {
|
||||
# CsvError(csv::Error);
|
||||
# }
|
||||
# }
|
||||
|
||||
fn run() -> Result<()> {
|
||||
let data = "name-place-id
|
||||
Mark-Melbourne-46
|
||||
Ashley-Zurich-92";
|
||||
|
||||
let mut reader = ReaderBuilder::new().delimiter(b'-').from_reader(data.as_bytes());
|
||||
for result in reader.records() {
|
||||
println!("{:?}", result?);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
#
|
||||
# quick_main!(run);
|
||||
```
|
||||
|
||||
<!-- Categories -->
|
||||
|
||||
[cat-encoding-badge]: https://badge-cache.kominick.com/badge/encoding--x.svg?style=social
|
||||
|
@ -522,11 +573,8 @@ fn run() -> Result<()> {
|
|||
[application/x-www-form-urlencoded]: https://url.spec.whatwg.org/#application/x-www-form-urlencoded
|
||||
[`form_urlencoded::byte_serialize`]: https://docs.rs/url/1.4.0/url/form_urlencoded/fn.byte_serialize.html
|
||||
[`form_urlencoded::parse`]: https://docs.rs/url/*/url/form_urlencoded/fn.parse.html
|
||||
<<<<<<< HEAD
|
||||
[`csv::Writer`]: https://docs.rs/csv/*/csv/struct.Writer.html
|
||||
[`write_record`]: https://docs.rs/csv/*/csv/struct.Writer.html#method.write_record
|
||||
[`serialize`]: https://docs.rs/csv/*/csv/struct.Writer.html#method.serialize
|
||||
[`flush`]: https://docs.rs/csv/*/csv/struct.Writer.html#method.flush
|
||||
=======
|
||||
[`csv::invalid_option`]: https://docs.rs/csv/*/csv/fn.invalid_option.html
|
||||
>>>>>>> Handle invalid CSV data with serde
|
||||
|
|
|
@ -46,6 +46,7 @@ community. It needs and welcomes help. For details see
|
|||
| [Serialize records to CSV][ex-serialize-csv] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Serialize records to CSV using Serde][ex-csv-serde] | [![csv-badge]][csv] [![serde-badge]][serde] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Handle invalid CSV data with Serde][ex-invalid-csv] | [![csv-badge]][csv] [![serde-badge]][serde] | [![cat-encoding-badge]][cat-encoding] |
|
||||
| [Read CSV records with different delimeter][ex-csv-delimiter] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] |
|
||||
|
||||
## [Concurrency](concurrency.html)
|
||||
|
||||
|
@ -228,6 +229,7 @@ Keep lines sorted.
|
|||
[ex-clap-basic]: app.html#ex-clap-basic
|
||||
[ex-crossbeam-spawn]: concurrency.html#ex-crossbeam-spawn
|
||||
[ex-csv-serde]: encoding.html#ex-csv-serde
|
||||
[ex-csv-delimiter]: encoding.html#ex-csv-delimiter
|
||||
[ex-threadpool-fractal]: concurrency.html#ex-threadpool-fractal
|
||||
[ex-dedup-filenames]: app.html#ex-dedup-filenames
|
||||
[ex-extract-links-webpage]: net.html#ex-extract-links-webpage
|
||||
|
|
Loading…
Add table
Reference in a new issue