> whole point is to be roughly human-readable and using non-printing characters defeats that. You can't even easily enter these things via the command line.
> If we're abandoning human-readability, why even bother with ASCII? Just use a binary format. Has anyone actually used ASCII unit and record separator delimiters successfully? I'd be curious about what advantages they had over a binary format, even just a protobuf or Thrift serialized form. If we want to preserve schemalessness, there's stuff like Sereal.
--- arjie, June 8, 2016
https://news.ycombinator.com/item?id=11862769
Here's another one from more than twelve years ago:
> I've done this.
> Everybody hated it. Most text editors don't display anything useful with these characters (either hiding them altogether or showing a useless "uknown" placeholder), and spreadhseet tools don't support the record separator (although they all let you provide a custom entry separator so the "unit" separator can work). Besides the obvious problem that there's no easy way to type the darned things when somebody hand-edits the file.
--- Pxtl, March 26, 2014
Slide 22 https://www.radwin.org/michael/talks/yapache-oscon2006.pdf
What was the idea of the designers how they should be used?
This is trading off ongoing usability for one-time developer convenience. The example given in the post would also struggle with a large file as it loads the entire contents into memory, while having Python feed you lines allows it to read in chunks. Plenty of accurate, unit-tested CSV parsers exist in every language, it’s fine to use one and be done with it. Tabular data formats are a solved problem.
If the files aren't human editable anymore, why stick with CSV at all?
It’s inherently universal because it’s text-based, and I think you underrate the occasional need to inspect it yourself. And when you do, it’s nicer to view than JSON to throw out an example (arguably JSON and variants need their own bespoke file viewer!)
It’s like saying markdown should be abandoned because text editors do all the formatting for you anyways and different markdown parsers exist and don’t always play nice. Or like saying txt should be abandoned in favor of rtf, even. Okay, sure, not invalid points. But in practice? Simplicity is often a virtue.
Also, as wonderful as this would be, as other comments say, no one uses it because no one uses it.
Works internally, breaks externally, which half of the benefit of a CSV is that you can give just about anyone the file and they can work with it.
sed $'s/\x1f/,/g; s/\x1e/\\\n/g; s/\x04//g'
awk 'BEGIN { RS="\036"; FS="\037"; OFS="," } { sub(/\004$/, ""); $1=$1; print }'