我有一个管道分隔文件,每行有35个管道.在第35个字段后面有一个预期的换行符.例如:
FirstField|ME|HERE|PHONE|Description|.....|LastField
FirstField|YOu|THERE|PHONE|Description|.....|LastField
Run Code Online (Sandbox Code Playgroud)
但是,管道之间的某些数据(例如在描述字段中)包含换行符.例如:
FirstField|Them|Where|PHONE|This contains a
LineFeed
Or two
or more|.....|LastField
Run Code Online (Sandbox Code Playgroud)
问题是,如何删除35个字段中任何一个字段中的换行符,但不在行尾?
(注意:我正在使用Notepad ++进行测试)
您可以使用Notepad ++ PythonScript插件.
请参阅有关如何在此处安装工作版本的说明并创建以下脚本文件:
def repl(match):
return match.group(0).replace("\r\n", "").replace("\n", "").replace("\r", "")
editor.rereplace(r'^[^|]*(?:\|[^|]*){36}$', repl)
Run Code Online (Sandbox Code Playgroud)
如果将脚本文件命名为replace_lbr_inblock.py,则可以通过选择Plugins - > Python Script - > Scripts - > replace_lbr_inblock来调用它.
正则表达式^[^|]*(?:\|[^|]*){36}$匹配
^ - 开始行[^|]* - 除零之外的零个或多个字符 |(?:\|[^|]*){36}- 36个序列的a |后跟零个或多个管道$ - 行结束.之前:
后: