parse With Header(text: string) - > Result<Array<Map<string, 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.
Связанное правило · Require unique headers for named CSV rows →Результат
The declared result type is Result<Array<Map<string, string>>, string>.
Эффекты
Ошибки
Result and effects
СсылкаParse named CSV rows after checking that every header name is unique. Repeated names return Err before any data row is converted, including a header with no following data rows.
Why
СсылкаEach name identifies one column. Rejecting a repeated name prevents column order from choosing which value survives.
Related entries
СсылкаRequire unique headers for named CSV rows
Ссылка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
Ссылкаimport std.csvimport std.testimport std.iolet rows = test.assertOk(csv.parseWithHeader("name,count\nTopaz,6"))let row = test.assertSome(rows.get(0))io.writeLine(test.assertSome(row.get("name")))io.writeLine(test.assertSome(row.get("count")))
Topaz
6
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
Topaz6
Reject duplicate names
Ссылкаimport std.csvimport std.iomatch (csv.parseWithHeader("name,name\nleft,right")) {case Err(_) => io.writeLine("duplicate headers rejected")case Ok(_) => io.writeLine("accepted")}
duplicate headers rejected
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
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
Ссылкаimport std.csvimport std.iomatch (csv.parseWithHeader("name,name\nright,left")) {case Err(_) => io.writeLine("duplicate headers rejected")case Ok(_) => io.writeLine("accepted")}
duplicate headers rejected
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
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
Ссылкаimport std.csvimport std.iomatch (csv.parseWithHeader("name,name\nsame,same")) {case Err(_) => io.writeLine("duplicate headers rejected")case Ok(_) => io.writeLine("accepted")}
duplicate headers rejected
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
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
Ссылкаimport std.csvimport std.iomatch (csv.parseWithHeader("name,name")) {case Err(_) => io.writeLine("duplicate headers rejected")case Ok(_) => io.writeLine("accepted")}
duplicate headers rejected
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
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
Ссылкаimport std.csvimport std.testimport std.iolet rows = test.assertOk(csv.parse("name,name\nleft,right"))let row = test.assertSome(rows.get(1))io.writeLine("{row[0]}:{row[1]}")
left:right
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
left:right