Tab-separated values
| Filename extension | .tsv, .tab[1] |
|---|---|
| Internet media type | text/tab-separated-values |
| Uniform Type Identifier (UTI) | public.tab-separated-values-text[2] |
| UTI conformation | public.delimited-values-text[2] |
| Developed by | University of Minnesota Internet Gopher Team Internet Assigned Numbers Authority |
| Initial release | c. June 1993 |
| Type of format | Delimiter-separated values format |
| Container for | database information organized as field separated lists |
| Standard | IANA MIME type |
Tab-separated values (TSV) is a plain text data format for storing tabular data where the values of a record are separated by a tab character and each record is a line (i.e. newline separated).[3] The TSV format is a form of delimiter-separated values (DSV) and is similar to the commonly-used comma-separated values (CSV) format.
TSV is a relatively simple format and is widely supported for data exchange by software that generally deals with tabular data. For example, a TSV file might be used to transfer information from a database to a spreadsheet.
Example
The following are records of the Iris flower data set in TSV format. Since a tab is not a printable character (is invisible), an arrow (→) is used for demonstration here to denote a tab character.
Sepal length→Sepal width→Petal length→Petal width→Species 5.1→3.5→1.4→0.2→I. setosa 4.9→3.0→1.4→0.2→I. setosa 4.7→3.2→1.3→0.2→I. setosa 4.6→3.1→1.5→0.2→I. setosa 5.0→3.6→1.4→0.2→I. setosa
The following is the same data rendered as a table.
| Sepal length | Sepal width | Petal length | Petal width | Species |
|---|---|---|---|---|
| 5.1 | 3.5 | 1.4 | 0.2 | I. setosa |
| 4.9 | 3.0 | 1.4 | 0.2 | I. setosa |
| 4.7 | 3.2 | 1.3 | 0.2 | I. setosa |
| 4.6 | 3.1 | 1.5 | 0.2 | I. setosa |
| 5.0 | 3.6 | 1.4 | 0.2 | I. setosa |
If a text editor that supports Dynamic tab stops (aka. "elastic tabstops") is used to view the contents of a TSV file, the layout will look like the table rendering just without cell borders and header row formatting (though the latter can be achieved using Unicode characters).
Delimiter collision
As a form of delimiter collision, if a field (record value) contained a tab character, the data format would become meaningless since tabs were no longer only used between fields. To prevent this situation, the IANA media type standard for TSV simply disallows a tab within a field. Similarly, a value cannot contain a line terminator.[4] To represent a value with an embedded tab or line terminator character, a commonly-used mechanism is to replace the character with the corresponding escape sequence as shown in the following table.[5][6]
| sequence | represents |
|---|---|
\t
|
tab |
\n
|
line feed |
\r
|
carriage return |
\\
|
backslash |
Another commonly-used convention, borrowed from CSV (RFC 4180), is to enclose a value that contains a tab or line terminator character in quotes.[7][8]
Line terminator
As for any text file, the character(s) used for line terminator varies. On a Microsoft-based system, normally it's a carriage return (CR) and line feed (LF) sequence. On a Unix-based system, it's just LF. The de-facto specification[9] uses the term "EOL" which is an ambiguous term like line terminator and newline. Software often is designed to either handle the line terminator for the platform on which it runs or to handle either terminator.
References
- ↑ U of Edin. Research Data Support Team. "Choose the best file formats". University of Edinburgh. § Formats we recommend. https://www.ed.ac.uk/information-services/research-support/research-data-service/after/data-repository/choosing-file-formats.
- ↑ 2.0 2.1 "tabSeparatedText". Apple Developer Documentation: Uniform Type Identifiers. Apple Inc. https://developer.apple.com/documentation/uniformtypeidentifiers/uttype/3551577-tabseparatedtext.
- ↑ "How To Use Tab Separated Value (TSV) files". International Monetary Fund. https://www.imf.org/external/help/tsv.htm.
- ↑ Lindner 1993.
- ↑ Dusek, Jason (2014-05-06). "Linear TSV: simple, line-oriented, tabular data". http://dataprotocols.org/linear-tsv/.
- ↑ Dolan, Stephen (2018-11-01). "jq Manual". https://stedolan.github.io/jq/manual/.
- ↑ Miller, Rob (2015-09-22) (in en). Text Processing with Ruby: Extract Value from the Data That Surrounds You. Pragmatic Bookshelf. pp. 94. ISBN 978-1-68050-492-7. https://books.google.com/books?id=dg9QDwAAQBAJ&pg=PT94.
- ↑ Giuseppini, Gabriele; Burnett, Mark (2005-02-10) (in en). Microsoft Log Parser Toolkit: A Complete Toolkit for Microsoft's Undocumented Log Analysis Tool. Elsevier. pp. 311. ISBN 978-0-08-048939-1. https://books.google.com/books?id=vnIXo-yUT2gC.
- ↑ "IANA: text/tab-separated-values". https://www.iana.org/assignments/media-types/text/tab-separated-values.
Sources
- "TSV — Tab-Separated Values". Library of Congress. https://www.loc.gov/preservation/digital/formats/fdd/fdd000533.shtml.
- Lindner, Paul (June 1993). "text/tab-separated-values". Assigned Media Types Registry. University of Minnesota Internet Gopher Team. https://www.iana.org/assignments/media-types/text/tab-separated-values.
- "How To Use Tab Separated Value (TSV) Files". https://www.imf.org/external/help/tsv.htm.
Further reading
- Jukka, Korpela (2000-09-01). "Tab Separated Values (TSV): a format for tabular data exchange". https://jkorpela.fi/TSV.html.
- Welinder, Morten (2012-12-19). The Gnumeric Manual (v1.12 ed.).
