在Notepad++中或通过使用Python合并行

2024-06-02 07:10:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的文件,结构如下:

  • 每一行都应该以500开头
  • 有些行不是以500开头的(第2行、第4行,基本上都是偶数行)

我想做的是:

  • 不以500开头的行应该与上面的非偶数行合并(因此第2行与第1行合并,第4行与第3行合并,等等)。你知道吗
  • 合并后,应添加额外的分号(即<Line 1>;<Line 2>)。你知道吗

如何在python(2.7)中轻松实现它?你知道吗

Notepad++中的Regex也可以工作。我听说我应该使用多行模式,但我不知道怎么做。也许这并不难,但我很难应付。你知道吗

谢谢。你知道吗

这里输入(简化):

;500;616;;”YPO_INV”;”KP”;”51D0072”;”YNU”
;”     6,291.00”;;
;500;6900;;”YPNV”;”KE”;”53213072”;”YOU”
;”     6,991.00”;;

screenshot Notepad++

预期产量:

;500;616;;”YPO_INV”;”KP”;”51D0072”;”YNU”;;”     6,291.00”;;
;500;6900;;”YPNV”;”KE”;”53213072”;”YOU”;;”     6,991.00”;;

Tags: 文件youline模式结构regex偶数产量
3条回答

使用Notepad++进行这种简单的更改。你知道吗

  1. 转到替换菜单(Ctrl+H
  2. 选择正则表达式(Alt+G
  3. 输入以下值:

    • 找到什么:[\r\n]+(;(?!500))
    • 替换为\1
  4. 单击“全部替换”(Alt+A

试试这个正则表达式:

[\r\n]+(?!;500)

;替换每个匹配项

Click for Demo

说明:

  • [\r\n]+-匹配换行符或回车符的1+次出现次数
  • (?!;500)负向前看以确保当前位置后面没有:500

更换前:

enter image description here

更换后:

enter image description here

正则表达式

详情:

  • ^断言行首的位置
  • (?!)负面展望

Python代码

text = open(r'C:\....txt').read()
r = re.compile(r'\n^(?!;500)', re.M)
text = r.sub(';', text)

输出:

;500;616;;”YPO_INV”;”KP”;”51D0072”;”YNU”;;”     6,291.00”;;
;500;6900;;”YPNV”;”KE”;”53213072”;”YOU”;;”     6,991.00”;;

Demo code

相关问题 更多 >