如何用正则表达式移除非XX结尾行的换行并格式化文本数据?
在Notepad++中用正则清理CSV数据的分步方案
以下是针对需求的具体操作步骤,所有操作均在Notepad++的查找替换窗口中完成,确保切换到「正则表达式」模式(不勾选「匹配新行」):
步骤1:合并乱序换行,将每条数据转为单行
原数据中存在大量单元格内换行,通过标记+替换统一整理:
- 查找:
XX,替换为:XX###,点击「全部替换」(给每条数据的结尾标记临时标识符) - 查找:
\r?\n,替换为空,点击「全部替换」(移除所有换行,将内容合并为一大段) - 查找:
XX###,替换为:XX\r\n,点击「全部替换」(将标记位置恢复换行,每条数据自成一行)
步骤2:清理格式冗余
- 清理逗号前后空白:查找
\s*,\s*,替换为:,,点击「全部替换」(去掉逗号前后的空格、换行残留,生成紧凑CSV结构) - 移除原有双引号:查找
",替换为空,点击「全部替换」(清除原数据中混乱的引号,为重新添加做准备)
步骤3:标准化单元格内容
- 填充空单元格:查找
(^|,)(?=,|$),替换为:$1"",点击「全部替换」(将空单元格转为"",符合CSV规范) - 为非数值型单元格添加双引号:
- 查找:
(^|,)(?!\d+$|--)([^,]+)(?=,|$) - 替换为:
$1"$2" - 点击「全部替换」
正则说明: (^|,):匹配行首或单元格分隔逗号,保留原有结构(?!\d+$|--):排除纯数字和--的单元格(这两类无需加引号)([^,]+):捕获需要加引号的单元格内容(?=,|$):确保匹配的是完整单元格
- 查找:
步骤4:恢复表头格式(可选)
如果不需要表头被加引号,执行:
- 查找:
^"a","b","c","d","e" - 替换为:
a,b,c,d,e - 点击「全部替换」
执行完所有步骤后,即可得到标准化CSV格式,可直接导入Excel、R或Python使用。
内容的提问来源于stack exchange,提问作者HSJ
相关产品推荐
相关产品推荐

