For the complete documentation index, see llms.txt. This page is also available as Markdown.

csv

Use csv for CSV parsing, writing, and table-style transforms over arrays of row objects.

import "std:csv"

Example

import "std:csv"

array rows = csv.parse("name,age\nAda,36")
log rows[0]["name"]

API reference

csv

Method
Returns
Notes

csv.parse(data: any)

array

Maps each data row to the header names, filling missing fields with empty strings.

csv.parseRaw(data: any)

array

Parses raw.

csv.stringify(data: object)

string

Serialises a value to text.

csv.stringifyRows(data: array)

string

csv.stringifyArray(data: array)

string

csv.readFile(path: any)

array

Reads and parses keyed rows, returning an empty array on failure.

csv.readFileRaw(path: any)

array

Reads and parses raw rows, returning an empty array on failure.

csv.writeFile(path: any, data: object)

boolean

Stringifies one object and writes it to a file.

csv.writeFileRows(path: any, data: array)

boolean

Stringifies keyed rows and writes them to a file.

csv.writeFileArray(path: any, data: array)

boolean

Stringifies raw rows and writes them to a file.

csv.toRows(data: array)

array

Converts keyed objects through the same ordered row mapping used by parsing.

csv.fromRows(rows: array)

array

Creates from rows.

csv.getColumn(data: array, column: any)

array

Returns column.

csv.filter(data: array, fn: any)

array

Returns values accepted by a callback.

csv.mapRows(data: array, fn: any)

array

csv.reduce(data: array, initial: any, fn: any)

any

Reduces values with a callback.

csv.groupBy(data: array, key: any)

string[array]

Groups rows by the selected field.

csv.sortBy(data: array, key: any)

array

csv.sortByNum(data: array, key: any)

array

csv.aggregate(data: array, key: any, value: any, fn: any)

object

csv.count(data: array, key: any)

object

csv.unique(data: array, key: any)

array

csv.join(data1: array, data2: array, key: any)

array

csv.pivot(data: array, keyColumn: any, valueColumn: any, pivotColumn: any)

string[object]

Pivots rows into keyed objects.

csv.transpose(data: array)

array

csv.stats(data: array, key: any)

object

Returns usage statistics.

csv.merge(data1: array, data2: array)

array

csv.chunk(data: array, size: any)

array

csv.flatten(data: array, separator: any)

array

csv.sample(data: array, count: any)

array

csv.appendRow(data: array, row: object)

array

csv.prependRow(data: array, row: object)

array

csv.insertRow(data: array, index: any, row: object)

array

csv.deleteRow(data: array, index: any)

array

Deletes row.

csv.addColumn(data: array, column: any, defaultValue: any)

array

Adds column.

csv.removeColumn(data: array, column: any)

array

Removes column.

csv.renameColumn(data: array, oldColumn: any, newColumn: any)

array

Notes

  • Prefer import "std:csv"; the older import "osl/csv" spelling remains supported.

Behavior and limits

The parser accepts a UTF-8 BOM and rows with different lengths, but rejects duplicate headers. Writers keep header order stable. Column edits do not change the source rows. A partial sample never returns the same source row twice. Sampling and transposing empty or uneven data is supported.

Last updated