CSV 看起来简单,直到某个值里出现了分隔符。把每一行直接按逗号切开,在 Alice,Active,10 这种数据上能工作,但一旦单元格里出现 "Keyboard, compact" 或 "1,999.00" 就会失效。可靠的转换必须先解析 CSV 记录,再生成 Markdown。
先保证 CSV 本身有效
CSV 解析器会把引号字段中的分隔符视为文本。引号字段中的双引号通常用两个双引号表示。例如:
Product,Description,Price
Keyboard,"Compact, wireless","$89.00"
Monitor,"27"" IPS display","$299.00"
第二行只有三个单元格,不是五个。转换大文件之前,先确认分隔符和字符编码。电子表格导出的内容可能是逗号、制表符或分号,具体取决于地区设置。如果单元格里经常包含逗号,而且导出格式你可以控制,优先使用 TSV。
将解析后的网格转成 Markdown
Markdown 表格需要表头和分隔行。上面的记录会变成:
| Product | Description | Price |
| :--- | :--- | ---: |
| Keyboard | Compact, wireless | $89.00 |
| Monitor | 27" IPS display | $299.00 |
说明文字和标识符一般左对齐,紧凑的状态值可以居中,数字类字段通常右对齐,方便读者横向比较。对齐只是展示元数据,不会把字符串变成数值。
转义 Markdown 专用字符
CSV 的引号规则和 Markdown 的转义规则解决的是不同问题。解析后的单元格里如果有字面量 |,在生成 Markdown 之前必须转成 \|,否则它会被当成下一列的边界。大多数 Markdown 表格渲染器也不支持单元格里真正的换行。可以把换行替换成空格,或者在目标平台允许内联 HTML 时使用 <br>。
不要机械地删除所有引号。解析器只应该移除用于包裹字段的引号,并把双引号还原为字面量引号。未加引号的值里本来就存在的引号应该保留。
在目标平台验证
GitHub、GitLab、文档生成器和笔记工具并不完全实现同一种 Markdown 规则。把一小段样例粘到最终平台里,确认列数、竖线、HTML 和 Unicode 都正常,再去转换上千行数据。
对于敏感数据,可以直接使用 可视化 Markdown 表格生成器。解析和转换都在浏览器内完成,表格内容不需要上传到转换 API。