BurntSushi / BurntSushi/rust-csv

Skipping empty rows

Open
#159 15 comments 1 reaction 0 assignees View on GitHub
Dominant language
Rust
Stars
2k
Forks
257
PR merge metrics
No merged PRs in 30d

Description

#### What version of the `csv` crate are you using?

1.1.1

#### Briefly describe the question, bug or feature request.

The library skips the empty rows even when flexible is set to be true.

The default behavior in python csv library, Excel, Number is keeping empty rows, so I think we should follow that (the users may have hard time to find the different between the data they see in Excel and the result from the Rust code).

#### Include a complete program demonstrating a problem.
```rust
use csv; // 1.1.1

fn main() {
let s = "year,make\n\n1948,Porsche\n1967,Ford";

let reader = csv::ReaderBuilder::new()
.has_headers(false)
.flexible(true)
.from_reader(s.as_bytes());

for (i, record) in reader.into_records().enumerate() {
println!("row: {} - record: {:?}", i, record.unwrap());
}
}
```

#### What is the observed behavior of the code above?

```
row: 0 - record: StringRecord(["year", "make"])
row: 1 - record: StringRecord(["1948", "Porsche"])
row: 2 - record: StringRecord(["1967", "Ford"])
```

#### What is the expected or desired behavior of the code above?

```
row: 0 - record: StringRecord(["year", "make"])
row: 1 - record: StringRecord([])
row: 2 - record: StringRecord(["1948", "Porsche"])
row: 3 - record: StringRecord(["1967", "Ford"])
```

Here is the python code for the same csv:

```python
import io, csv
s = "year,make\n\n1948,Porsche\n1967,Ford"
print(list(csv.reader(io.StringIO(s))))
# output >>> [['year', 'make'], [], ['1948', 'Porsche'], ['1967', 'Ford']]
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.