Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Библиотека

    std.csv.parse

    Parses CSV text into positional string rows.

    parse(text: string) -> Result<Array<Array<string>>, string>
    Модуль
    std.csv →
    Получатель
    Неприменимо
    Минимальное число аргументов
    1
    Максимальное число аргументов
    1

    Declaration and parameters

    Ссылка

    Доступность

    Включено по умолчанию · Не определено

    Import std.csv in language mode 5.21.

    The current compiler selects std/csv.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    Получатель

    Ограничения параметров

    parseWithHeader returns Result<Array<Map<string, string>>, string>. A repeated header name returns Err instead of choosing a first or last column.

    Header uniqueness is checked before converting data rows. Repeated names are rejected when cell values are equal and when the input contains a header without data rows.

    The header names are the parsed CSV field values. Equality uses those string values without an additional trimming or case-folding step.

    Use csv.parse when columns must remain positional. Positional parsing preserves every field and does not assign header names.

    Результат

    The declared result type is Result<Array<Array<string>>, string>.

    Эффекты

    Ошибки

    Result and effects

    Ссылка

    Parses CSV text into positional string rows.

    Related entries

    Ссылка

    std.csv →

    Require unique headers for named CSV rows

    Ссылка
    Правилоtopaz.stdlib.contract.csv-unique-headers.rule

    Require unique headers for named CSV rows

    parseWithHeader returns Result<Array<Map<string, string>>, string>. A repeated header name returns Err instead of choosing a first or last column.

    Header uniqueness is checked before converting data rows. Repeated names are rejected when cell values are equal and when the input contains a header without data rows.

    The header names are the parsed CSV field values. Equality uses those string values without an additional trimming or case-folding step.

    Use csv.parse when columns must remain positional. Positional parsing preserves every field and does not assign header names.

    Причина

    A named row gives each name one column. Rejecting duplicates keeps column order from selecting a winner, while positional parsing retains data that has no unique names.

    Read unique named columns

    Ссылка
    main.tpzRead unique named columnsОткрыть песочницу →
    1. import std.csv
    2. import std.test
    3. import std.io
    4. let rows = test.assertOk(csv.parseWithHeader("name,count\nTopaz,6"))
    5. let row = test.assertSome(rows.get(0))
    6. io.writeLine(test.assertSome(row.get("name")))
    7. io.writeLine(test.assertSome(row.get("count")))
    Ожидаемый выводКод завершения 0
    Topaz
    6
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. Topaz
    2. 6

    Reject duplicate names

    Ссылка
    main.tpzReject duplicate namesОткрыть песочницу →
    1. import std.csv
    2. import std.io
    3. match (csv.parseWithHeader("name,name\nleft,right")) {
    4. case Err(_) => io.writeLine("duplicate headers rejected")
    5. case Ok(_) => io.writeLine("accepted")
    6. }
    Ожидаемый выводКод завершения 0
    duplicate headers rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. duplicate headers rejected

    The parser rejects this input by returning Err. The program handles that result and exits successfully.

    Reject duplicate names after reversing values

    Ссылка
    main.tpzReject duplicate names after reversing valuesОткрыть песочницу →
    1. import std.csv
    2. import std.io
    3. match (csv.parseWithHeader("name,name\nright,left")) {
    4. case Err(_) => io.writeLine("duplicate headers rejected")
    5. case Ok(_) => io.writeLine("accepted")
    6. }
    Ожидаемый выводКод завершения 0
    duplicate headers rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. duplicate headers rejected

    The parser rejects this input by returning Err. The program handles that result and exits successfully.

    Reject duplicate names even when the values agree

    Ссылка
    main.tpzReject duplicate names even when the values agreeОткрыть песочницу →
    1. import std.csv
    2. import std.io
    3. match (csv.parseWithHeader("name,name\nsame,same")) {
    4. case Err(_) => io.writeLine("duplicate headers rejected")
    5. case Ok(_) => io.writeLine("accepted")
    6. }
    Ожидаемый выводКод завершения 0
    duplicate headers rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. duplicate headers rejected

    The parser rejects this input by returning Err. The program handles that result and exits successfully.

    Reject duplicate names before reading data rows

    Ссылка
    main.tpzReject duplicate names before reading data rowsОткрыть песочницу →
    1. import std.csv
    2. import std.io
    3. match (csv.parseWithHeader("name,name")) {
    4. case Err(_) => io.writeLine("duplicate headers rejected")
    5. case Ok(_) => io.writeLine("accepted")
    6. }
    Ожидаемый выводКод завершения 0
    duplicate headers rejected
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. duplicate headers rejected

    The parser rejects this input by returning Err. The program handles that result and exits successfully.

    Preserve repeated header text in positional rows

    Ссылка
    main.tpzPreserve repeated header text in positional rowsОткрыть песочницу →
    1. import std.csv
    2. import std.test
    3. import std.io
    4. let rows = test.assertOk(csv.parse("name,name\nleft,right"))
    5. let row = test.assertSome(rows.get(1))
    6. io.writeLine("{row[0]}:{row[1]}")
    Ожидаемый выводКод завершения 0
    left:right
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. left:right

    Меню

    Загрузка →