Function parse
- parse(input): string[][]
Parameters
- input: string
The input to parse.
Returns string[][]
The parsed data.
- input: string
- parse<const T>(input, options): ParseResult<ParseOptions, T>
Parses CSV string into an array of objects or an array of arrays of strings.
If
columnsorskipFirstRowoption is provided, it returns an array of objects, otherwise it returns an array of arrays of string.Type Parameters
- const T extends ParseOptions
The options' type for parsing.
Parameters
- input: string
The input to parse.
- options: T
The options for parsing.
Returns ParseResult<ParseOptions, T>
If you don't provide
options.skipFirstRoworoptions.columns, it returnsstring[][]. If you provideoptions.skipFirstRoworoptions.columns, it returnsRecord<string, string>[].Example: Don't skip first row with `skipFirstRow: false`
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
import { assertType, IsExact } from "@std/testing/types"
const string = "a,b,c\nd,e,f";
const result = parse(string, { skipFirstRow: false });
assertEquals(result, [["a", "b", "c"], ["d", "e", "f"]]);
assertType<IsExact<typeof result, string[][]>>(true);Example: Skip first row with `skipFirstRow: true`
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
import { assertType, IsExact } from "@std/testing/types"
const string = "a,b,c\nd,e,f";
const result = parse(string, { skipFirstRow: true });
assertEquals(result, [{ a: "d", b: "e", c: "f" }]);
assertType<IsExact<typeof result, Record<string, string>[]>>(true);Example: Specify columns with `columns` option
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
import { assertType, IsExact } from "@std/testing/types"
const string = "a,b,c\nd,e,f";
const result = parse(string, { columns: ["x", "y", "z"] });
assertEquals(result, [{ x: "a", y: "b", z: "c" }, { x: "d", y: "e", z: "f" }]);
assertType<IsExact<typeof result, Record<"x" | "y" | "z", string>[]>>(true);Example: Specify columns with `columns` option and skip first row with
skipFirstRow: trueimport { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
import { assertType, IsExact } from "@std/testing/types"
const string = "a,b,c\nd,e,f";
const result = parse(string, { columns: ["x", "y", "z"], skipFirstRow: true });
assertEquals(result, [{ x: "d", y: "e", z: "f" }]);
assertType<IsExact<typeof result, Record<"x" | "y" | "z", string>[]>>(true);Example: TSV (tab-separated values) with `separator: "\t"`
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
const string = "a\tb\tc\nd\te\tf";
const result = parse(string, { separator: "\t" });
assertEquals(result, [["a", "b", "c"], ["d", "e", "f"]]);Example: Trim leading space with `trimLeadingSpace: true`
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
const string = " a, b, c\n";
const result = parse(string, { trimLeadingSpace: true });
assertEquals(result, [["a", "b", "c"]]);Example: Lazy quotes with `lazyQuotes: true`
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
const string = `a "word","1"2",a","b`;
const result = parse(string, { lazyQuotes: true });
assertEquals(result, [['a "word"', '1"2', 'a"', 'b']]);Example: Set comment prefix with `comment` option
import { parse } from "@std/csv/parse";
import { assertEquals } from "@std/assert/equals";
const string = "a,b,c\n# THIS IS A COMMENT LINE\nd,e,f";
const result = parse(string, { comment: "#" });
assertEquals(result, [["a", "b", "c"], ["d", "e", "f"]]);Example: Infer the number of fields from the first row with `fieldsPerRecord: 0`
import { parse } from "@std/csv/parse";
import { assertThrows } from "@std/assert/throws";
// Note that the second row has more fields than the first row
const string = "a,b\nc,d,e";
assertThrows(
() => parse(string, { fieldsPerRecord: 0 }),
SyntaxError,
"Syntax error on line 2: expected 2 fields but got 3",
);Example: Enforce the number of fields for each row with `fieldsPerRecord: 2`
import { parse } from "@std/csv/parse";
import { assertThrows } from "@std/assert/throws";
const string = "a,b\nc,d,e";
assertThrows(
() => parse(string, { fieldsPerRecord: 2 }),
SyntaxError,
"Syntax error on line 2: expected 2 fields but got 3",
);- const T extends ParseOptions
Parses CSV string into an array of arrays of strings.