删空行和空值行必须分两步:先用^s*$清除纯空行,再用^[ \t""]*(?:[ \t""]*,[ \t""]*)*[ \t"]*$匹配逻辑空行;处理csv需规避引号内逗号、清理bom、关闭自动换行、使用等宽字体、aligntab后清理空格,并保存为utf-8 without bom。

删空行和空值行必须分两步,不能只用 ^s*$
直接上 ^s*$ 只能干掉真正什么都没有的空行(比如连续两个换行符之间的那行),但 CSV 里所谓“空值行”往往是 ,,,、"","","" 或 , , "" 这种——看着有内容,其实全是空字段。这类行会被 ^s*$ 完全忽略。
正确做法是分两轮:
- 第一轮:用
^s*$清掉纯空行,避免干扰后续匹配 - 第二轮:用
^[ ""]*(?:[ ""]*,[ ""]*)*[ ""]*$匹配整行只含逗号、引号、空格、制表符的“逻辑空行” - 如果文件带 BOM(常见于 Excel 导出),先搜
ufeff替换为空,否则^锚点会失效 - 最后一行没换行符时,
$可能不生效,建议手动检查末尾几行
处理引号内逗号必须跳过,否则列编辑会错位
CSV 字段含逗号(如 "Smith, John",25,"NY")时,直接按逗号切分或对齐会把一个人名切成两列。Sublime 不解析 CSV 结构,只能靠正则“绕开”引号内的分隔符。
安全写法是用正向先行断言跳过引号包围的内容:
- 查找:
,(?=(?:[^"]*"[^"]*")*[^"]*$)—— 表示“后面跟着偶数个双引号的逗号”,即不在引号内 - 替换为:
,(逗号+空格),为 AlignTab 对齐做准备 - 若字段含转义引号(
"He said ""Hi""."),这个正则会失效,需人工确认或改用脚本预处理 - 操作前务必关闭
View → Word Wrap,否则光标定位偏移,列编辑不准
批量修改某列数据,Alt+拖选比 Ctrl+D 更可控
Ctrl+D 是按字符串全文匹配,容易误中注释、JSON 字段或子串;而 CSV 列修改本质是“同一水平位置的所有字符”,必须靠列编辑模式。
操作要点很具体:
- 按住
Alt(Windows/Linux)或Option+Shift(macOS),鼠标垂直拖选目标列区域 - 松开后输入新内容,所有行该列同步更新;按
Delete会清空整列(含空格,可能破坏对齐) - 必须使用等宽字体(如
Fira Code、Consolas),中文字宽不一致会导致错位 - 若字段含中文,先用正则
([u4e00-u9fa5]+)替换为英文占位符(如SHANGHAI),改完再换回
AlignTab 对齐只是视觉辅助,导出前必须清理空格
AlignTab 的作用是插入空格让逗号“看起来对齐”,它完全不改变 CSV 的逻辑结构。导出给 Pandas 或 Excel 读取时,程序仍按原始逗号切分——所以对齐后多出来的空格反而会变成字段前缀。
导出前必做清理:
- 用
,s*替换为,,删掉逗号后的所有空格 - 用
s*,替换为,,删掉逗号前的空格(注意别误删字段内空格) - 检查首尾是否有意外空格:查找
^[ ]+和[ ]+$分别替换为空 - 保存前确认编码为
UTF-8 without BOM,右下角点击编码 →Save with Encoding











