<story><title>Show HN: Tidy Viewer – a cross-platform CSV pretty printer for viewer enjoyment</title><url>https://github.com/alexhallam/tv</url></story><parent_chain><item><author>flusteredBias</author><text>I spend a lot of time in the terminal and want to quickly glance at a csv files without making a new script, opening excel, or using a tui. I made tidy-viewer (tv) because current tools like cat and column were not pretty enough.&lt;p&gt;tv modifies raw files in the following ways:&lt;p&gt;1. NA detection and highlighting
2. Printing only significant digits
3. Header and footer meta data&lt;p&gt;I have been using this a lot at work. There is a lot more work to do, but it is in a usable state.&lt;p&gt;Give it a try! If you like it then star on Github!</text></item></parent_chain><comment><author>contravariant</author><text>The NA detection and higlighting is nice but I&amp;#x27;m not sure how I feel about showing anything other than the exact textual value. I don&amp;#x27;t mind abridging quotes when they&amp;#x27;re not necessary, but showing &amp;quot;N&amp;#x2F;A&amp;quot;, NA,, etc. as the same value is a bit iffy.</text></comment>
<story><title>Show HN: Tidy Viewer – a cross-platform CSV pretty printer for viewer enjoyment</title><url>https://github.com/alexhallam/tv</url></story><parent_chain><item><author>flusteredBias</author><text>I spend a lot of time in the terminal and want to quickly glance at a csv files without making a new script, opening excel, or using a tui. I made tidy-viewer (tv) because current tools like cat and column were not pretty enough.&lt;p&gt;tv modifies raw files in the following ways:&lt;p&gt;1. NA detection and highlighting
2. Printing only significant digits
3. Header and footer meta data&lt;p&gt;I have been using this a lot at work. There is a lot more work to do, but it is in a usable state.&lt;p&gt;Give it a try! If you like it then star on Github!</text></item></parent_chain><comment><author>einpoklum</author><text>First of all - kudos on tackling this task - it is indeed very annoying to get CSVs to render nicely on a terminal.&lt;p&gt;1. How does tidy-viewer compare with csvlook?&lt;p&gt;2. Looking at the demo video, there seems to be an odd fixation with &amp;quot;N&amp;#x2F;A&amp;quot;. The CSV spec, AFAIK, doesn&amp;#x27;t recognize this phrase. I don&amp;#x27;t understand why someone would expect a quoted string field whose raw characters are &amp;quot;n&amp;#x2F;a&amp;quot; should be rendered as anything other than n&amp;#x2F;a (i.e. lowercase and without the quotes). I&amp;#x27;m guessing maybe in your workflow you want to use that phrase a lot, but for a tool for the general public I&amp;#x27;d not do this kind of interpretation; and I would leave an empty field as empty.&lt;p&gt;3. tidy-viewer seems to require &amp;quot;unstable library features&amp;quot;, or at least ones which were unstable as of Rust 1.48.0 . It would be nice if you could be compatible with older rust distributions&amp;#x2F;versions.&lt;p&gt;4. Many systems, especially older ones, especially ones which you access remotely and don&amp;#x27;t have root privileges on, won&amp;#x27;t have a rust installation. It would be even more convenient if you could provide binaries with little or no extra dynamic library dependencies, which could be used on older &amp;#x2F; rustless systems. I realize this is a tall order, however.&lt;p&gt;5. What about scrolling? The worst part of viewing CSVs is having to handle wide ones which exceed the terminal width, and having decent horizontal as well as vertical scrolling ability. less doesn&amp;#x27;t cut it, because it doesn&amp;#x27;t keep the header row, plus it doesn&amp;#x27;t recognize field widths.&lt;p&gt;6. tidy-viewer does not seem to support wrapping longer fields onto multiple terminal lines.&lt;p&gt;7. When the user doesn&amp;#x27;t specify the color scheme, are you choosing one based on the terminal colors, or are you using absolute color values? I suggest the former.&lt;p&gt;8. tidy-viewer loads and parses the entire CSV immediately; and, in fact, seems to keep two copies of it in memory at once. This means it cannot be used with large files without thrashing; and even if your CSV does fit in global memory, it will still be kind of unusable, trying to dump gigabytes onto the terminal.&lt;p&gt;Bottom line: A nice initial effort, but the more serious challenges are yet to be tackled, plus needs to be more robustly cross-platform.</text></comment>