Reads and writes comma-separated values (CSV) files.
import { parse } from "@std/csv/parse"; import { assertEquals } from "@std/assert"; const string = "a,b,c\nd,e,f"; assertEquals(parse(string, { skipFirstRow: false }), [["a", "b", "c"], ["d", "e", "f"]]); assertEquals(parse(string, { skipFirstRow: true }), [{ a: "d", b: "e", c: "f" }]); assertEquals(parse(string, { columns: ["x", "y", "z"] }), [{ x: "a", y: "b", z: "c" }, { x: "d", y: "e", z: "f" }]);
There are many kinds of CSV files; this module supports the format described in RFC 4180.
A csv file contains zero or more records of one or more fields per record. Each record is separated by the newline character. The final record may optionally be followed by a newline character.
field1,field2,field3
White space is considered part of a field.
Carriage returns before newline characters are silently removed.
Blank lines are ignored. A line with only whitespace characters (excluding the ending newline character) is not considered a blank line.
Fields which start and stop with the quote character " are called quoted-fields. The beginning and ending quote are not part of the field.
The source:
normal string,"quoted-field"
results in the fields
[`normal string`, `quoted-field`]
Within a quoted-field a quote character followed by a second quote character is considered a single quote.
"the ""word"" is true","a ""quoted-field"""
results in
[`the "word" is true`, `a "quoted-field"`]
Newlines and commas may be included in a quoted-field
"Multi-line field","comma is ,"
results in
[`Multi-line field`, `comma is ,`]
Add Package
deno add jsr:@std/csv
Import symbol
import * as csv from "@std/csv";
---- OR ----
Import directly with a jsr specifier
import * as csv from "jsr:@std/csv";
Add Package
npx jsr add @std/csv
Import symbol
import * as csv from "@std/csv";
Add Package
yarn dlx jsr add @std/csv
Import symbol
import * as csv from "@std/csv";
Add Package
pnpm dlx jsr add @std/csv
Import symbol
import * as csv from "@std/csv";
Add Package
bunx jsr add @std/csv
Import symbol
import * as csv from "@std/csv";