sublime text 无法直接解析 csv 结构,需两轮正则处理:先用 ([^\,]+) 将字段加双引号,再手动添加方括号;前提为单行、无嵌套引号、无换行字段,且换行符必须用 \r?\n 替换。

Sublime Text 不能直接把 CSV 转成数组,它只做文本替换;你真正要的,是用两轮正则把 apple,banana,cherry 变成 ["apple", "banana", "cherry"] —— 前提是 CSV 必须单行、无嵌套引号、无换行字段。
CSV 必须先“压平”成单行
Sublime 的正则不解析 CSV 结构,只认字符。如果原始 CSV 是多行(比如 Excel 导出的),^(.+)$ 会每行匹配一次,但字段内逗号会被当成分隔符切开,结果错乱。
- 手动删掉所有换行符:Ctrl+H → 开启正则 → 查找
\r?\n→ 替换为空(确保没有空行残留) - 确认逗号是唯一分隔符:字段含中文、空格、斜杠都 OK,但不能有未引号包裹的逗号,例如
Smith, John,25会错切成三列 - 如果字段本身带双引号(如
"a,b",c,"d"),正则无法安全提取——这种数据请先用 Python 或csvkit预处理,别硬上
第一轮:用正则把每个字段包上引号
目标是把 apple,banana,cherry 变成 "apple","banana","cherry"。关键在捕获组和边界控制。
- Ctrl+H → 开启正则(.* 按钮)→ 查找
([^,]+)→ 替换为"$1" - 注意:
[^,]+表示“非逗号字符连续出现”,它能跳过空字段(如a,,c中的""不会被匹配),但不会生成空字符串;若需保留空字段,改用([^,]*) - 如果字段开头/结尾有空格,
[^,]+会把它们一起包进去,后续得手动 trim;建议先全局替换^ +| +$(开头或结尾空格)为空
第二轮:补方括号和逗号,搞定数组格式
现在文本是 "apple","banana","cherry",只需头尾加 [ 和 ],中间已用逗号分隔。
- 全选内容 → Ctrl+Shift+P → 输入
insert at beginning of line→ 输入[ - 再全选 → Ctrl+Shift+P → 输入
insert at end of line→ 输入] - 或者更直接:按 Ctrl+A 全选 → 输入
[→ 方向键右 → 输入](Sublime 会自动在所有行末插入,但这里只有一行,所以没问题) - 别用
\r?\n替换为,——那是多行转数组的套路,单行 CSV 不需要
为什么不用插件或 Build System?
因为简单场景下,插件反而增加失败路径:比如 Advanced CSV 的 Reformat CSV 命令依赖 BOM 头和严格引号格式,遇到 UTF-8 no BOM 或字段含反斜杠就直接报错;而调 jq 需提前配好 PATH,Windows 用户常卡在 jq: command not found。
- 纯正则两步走,不依赖外部环境,不读取文件编码,不校验语法
- 失败只发生在输入不规范时(如字段含换行、未闭合引号),而不是工具链断裂
- 真正容易被忽略的是:你复制进来的 CSV 很可能自带
\r\n,但 Sublime 默认正则\n匹配不到\r;所以所有换行相关操作,必须写\r?\n,哪怕你刚切过 Unix(LF)











