CSV 选列与重排
CSV 列太多?选列、拖动排序、按列值过滤后导出新表
关于CSV 选列与重排
CSV 选列与重排解决的是「这张表 40 列,我只要其中 6 列,而且顺序要按我的来」。它不做格式转换,不碰 JSON、不碰 Excel 公式,只做三件事:挑列、排顺序、按某列的值筛行,然后原样导出一份新的 CSV。解析用的是自写的引号状态机,字段里带逗号、带换行、带双写引号都不会把列拆错位。
使用步骤
- 从 Excel 或文本编辑器复制整块表格,粘进输入框
- 分隔符先留「自动识别」;如果粘进来列全挤在一起,按实际用的改成制表符或分号
- 表单下方会出现列名标签:点一下切换是否保留,拖动可以调整先后顺序;也可以直接在「保留的列」里写 3, 姓名, 1
- 要筛行就填「按哪一列过滤」和「包含这段文字」,这是包含匹配,不是正则
- 点「导出 CSV」,结果区先给前几行预览,下载下来的是完整结果
常见错误
用 split(分隔符) 解析必然错位
只要有一格是「"张三, 备用"」这种引号里带逗号的写法,按逗号切出来的列数就比表头多,那一行之后的所有列全部错位。必须按引号状态机走:引号内的逗号是内容,不是分隔符。
空字段不是缺字段
a,,c 是三个字段,中间那个值是空字符串。手写脚本常把连续分隔符当成「重复分隔符」跳过,于是三列被压成两列,后面整行左移,看起来像数据莫名错了一格。
过滤当成了正则
过滤只做「包含这段文字」。填 南京 能命中「南京市」,填 .*南京.* 什么也匹配不到——这里不解释正则,避免反斜杠和特殊字符在不该生效的地方生效。
常见问题
列名里本身带逗号,「保留的列」怎么写?
用序号更稳:先看预览表头,要第 5 列就写 5。列名和序号可以混着写,例如「3, 姓名, 1」,输出顺序就按你写的先后。
为什么粘进来只解析出 1 列?
分隔符和实际内容不一致。工具会检查内容里是否出现了别的候选分隔符,并提示改成哪一个;改完列名标签会立刻重新出现。
导出的文件用 Excel 打开中文乱码?
导出是 UTF-8 编码。老版本 Excel 双击 CSV 时按系统本地编码解析,中文就乱了。改用「数据 → 从文本/CSV」导入并指定 UTF-8,或者用新版 Excel 打开。
按列名选还是按序号选?
两种都支持。按列名可读性好、抗列序变化;按序号在列名重复或含特殊字符时更可靠。列名里带逗号时要用引号包起来,否则会被当成分隔符——这也是「只解析出一列」的常见原因。
能重排列顺序后导出吗?
能。选好的列按你填写的顺序输出,所以同一份操作既做了筛选也做了重排。导出仍由浏览器生成并下载,文件不经过服务器,原始 CSV 不会被留存。
来源:内置实现(自写 CSV 引号状态机) · License: MIT · 分类:数据
相关阅读
安全、快捷、开源工具及资源
无需安装、无需注册、无需命令行 —— 挑一个工具,填参数,出结果。