簡體   English   中英

在Notepad ++或使用Python合並行

[英]Merging lines in Notepad++ or by using Python

我有一個長文件,其結構如下:

  • 每行應以500開頭
  • 有些行不是以500開頭(第2行,第4行,基本上是每偶數行)

我想做的事:

  • 不以500開頭的行應與上方的偶數行合並(因此,第2行與第1行,第4行與第3行,等等)。
  • 合並后,應添加其他分號(即<Line 1>;<Line 2> )。

我如何在python(2.7)中輕松做到這一點?

Notepad ++中的正則表達式也可以使用。 我聽說我應該使用多行模式,但是我不知道該怎么做。 也許這還不算困難,但是我很難解決。

謝謝。

這里的輸入(簡體):

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

屏幕截圖記事本++

預期產量:

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

試試這個正則表達式:

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

用替換每個匹配;

點擊演示

說明:

  • [\\r\\n]+ -匹配1+次以上的換行符或回車符
  • (?!;500) -提前否定以確保當前位置不跟在:500

更換之前:

在此處輸入圖片說明

更換后:

在此處輸入圖片說明

正則表達式\\n^(?!;500)

細節:

  • ^在行首處聲明位置
  • (?!)負前瞻

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”;;

演示代碼

使用Notepad++進行這種簡單的更改。

  1. 轉到替換菜單( Ctrl + H
  2. 選擇正則表達式Alt + G
  3. 輸入以下值:

    • 找到什么[\\r\\n]+(;(?!500))
    • 替換為\\1
  4. 單擊全部替換Alt + A

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM