Read csv records with different delimiter

This commit is contained in:
Alisha 2017-07-10 23:46:36 +05:30 committed by Brian Anderson
parent ca13c3b10c
commit 2df7875008
2 changed files with 54 additions and 4 deletions

View file

@ -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

View file

@ -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