Skip to content

Working with TSV in Python

Tab-separated values (TSV) file handling with automatic format detection and high-performance data operations.

Terminal window
pip install fairspec

The TSV format is handled by the CSV plugin, which provides:

  • load_csv_table - Load TSV files into tables
  • save_csv_table - Save tables to TSV files
  • CsvPlugin - Plugin for framework integration

For example:

from fairspec import load_csv_table, Resource
table = load_csv_table(Resource(data="table.tsv"))
# the column types will be automatically inferred
from fairspec import load_csv_table, Resource
from fairspec_metadata import CsvFileDialect
# Load a simple TSV file
table = load_csv_table(Resource(data="data.tsv"))
# Load with explicit format
table = load_csv_table(Resource(
data="data.tsv",
fileDialect=CsvFileDialect(delimiter="\t", headerRows=[1]),
))
# Load multiple TSV files (concatenated)
table = load_csv_table(Resource(data=["part1.tsv", "part2.tsv", "part3.tsv"]))
from fairspec import save_csv_table
from fairspec_metadata import CsvFileDialect
# Save with default options
save_csv_table(table, path="output.tsv", fileDialect=CsvFileDialect(delimiter="\t"))
# Save with line terminator option
save_csv_table(table, path="output.tsv", fileDialect=CsvFileDialect(
delimiter="\t",
lineTerminator="\r\n",
))
from fairspec import load_csv_table, Resource
from fairspec_metadata import CsvFileDialect
# TSV with multiple header rows
table = load_csv_table(Resource(
data="multi-header.tsv",
fileDialect=CsvFileDialect(
delimiter="\t",
headerRows=[1, 2],
headerJoin="_",
),
))
from fairspec import load_csv_table, Resource
from fairspec_metadata import CsvFileDialect
# TSV with comment lines
table = load_csv_table(Resource(
data="with-comments.tsv",
fileDialect=CsvFileDialect(
delimiter="\t",
commentPrefix="#",
headerRows=[1],
),
))
# Or specify specific comment row numbers
table = load_csv_table(Resource(
data="with-comments.tsv",
fileDialect=CsvFileDialect(
delimiter="\t",
commentRows=[1, 2],
headerRows=[3],
),
))
from fairspec import load_csv_table, Resource
# Load from URL
table = load_csv_table(Resource(data="https://example.com/data.tsv"))
# Load multiple remote files
table = load_csv_table(Resource(data=[
"https://api.example.com/data-2023.tsv",
"https://api.example.com/data-2024.tsv",
]))