BurntSushi / rust-csv

A CSV parser for Rust, with Serde support.
The Unlicense
1.71k stars 218 forks source link

Is Linear TSV supported? #260

Open spektom opened 2 years ago

spektom commented 2 years ago

According to this article: https://en.wikipedia.org/wiki/Tab-separated_values#Conventions_for_lossless_conversion_to_TSV characters \n, \t, \r and \\ should be allowed to be escaped using '\' character.

Is my understanding correct, that rust-csv only allows to use \ character in context of double-quotes escaping (using csv::ReaderBuilder.escape(Some('\\')) option), or I'm missing some way to configure Linear TSV parser properly?

Thanks!

BurntSushi commented 2 years ago

The Wikipedia article is wishy washy here. If your second link is the true definition of "linear" TSV, then the relevant section is this:

Linear TSV provides for escape sequences, instead of quoting, so that implementations can naively split on the byte values of the separators.

Indeed, this crate does not support this. The only character you can escape is the quote character. The way to insert other special characters is to write them as literals inside of quotes.

I would be willing to add support for this option if it's a small one and opt-in.