跳至内容

CSV

解析和字符串化逗号分隔值(CSV)数据。

解析器将CSV数据映射为对象数组,字段名与标题行对应。例如,CSV数据:

name, value
A, 10
B, 2
C, 3

映射为以下对象数组:

[
{
"name": "A",
"value": 10
},
{
"name": "B",
"value": 2
},
{
"name": "C",
"value": 3
}
]

def

def 函数会自动将CSV数据解析并转换为Markdown表格格式(同样适用于XLSX)。

def("DATA", env.files[0])

def 还支持基本的行过滤选项,用于控制您想要插入到提示中的行数。

def("DATA", env.files[0], {
sliceHead: 50, // take first 50
sliceTail: 25, // take last 25
sliceSample: 5, // take 5 at random
})

CSV

类似于JavaScript中的JSON类,CSV类提供了用于解析和序列化逗号分隔值(CSV)数据的方法。

parse

parse 方法将 CSV 字符串转换为对象数组。第一行用作标题行。

const csv = await workspace.readText("penguins.csv")
const rows = CSV.parse(csv)

如果CSV文件没有标题行,您可以将列名指定为字符串数组。您还可以指定自定义数据分隔符。

const rows = CSV.parse(csv, {
delimiter: "|",
headers: ["name", "value"],
})

你可以使用defDatarows对象序列化到提示中。defData还支持基本的行过滤选项,如def

defData("DATA", rows)

stringify

stringify 方法将对象数组转换为CSV字符串。

const csvString = CSV.stringify(rows)

markdownify 方法将对象数组转换为Markdown表格。这种编码方式对LLM分词器更高效。

const md = CSV.markdownify(rows)
| name | value |
|------|-------|
| A | 10 |
| B | 2 |
| C | 3 |

parsers

parsers 还提供了一个用于解析CSV的解析器。对于无效输入,它会返回 undefined,并支持文件和解析选项。

const rows = parsers.CSV(env.files[0])

修复

您可以指定repair: true选项来修复CSV相关的常见LLM错误。

const rows = CSV.parse(csv, { repair: true })