在特定条件下删除换行符和制表符

时间:2018-02-07 12:36:38

标签: python regex

请帮我解决2个主题:

1)我有一个长文件,其结构如下 - 行应以500开头。但是有些行不以500开头(第2行,第4行)应该与上面的行合并(所以第2行与第1行等)。我怎么能在python(2.7)中轻松完成它?

2)你也可以看到我之间有很多制表符 - 如何删除不需要的制表符然后将制表符替换为管道或分号,以便将文件加载到数据库?通常,一个选项卡对应一列。

INPUT

Line 1: 500  94449  YUUUII  VP      0017A4775           
YPAYREQ
Line 2: BOS                 MA                                                                                                                                                          
5           0.00             1,000.00              0.00            0.00               
0.00                 0.00                    0.00                  0.00                
0.00
Line 3: 500  98220  YPO_INV KP      0017A4775           
YNOUINU
Line 4: MARTHJJIU                                                                                                                                                                               
5       8,000.00             8,000.00              0.00            0.00               
0.00                 0.00                    0.00                  0.00                                                 
C4

预期输出:

Line 1: 500;94449;YUUUII;VP;0017A4775;YPAYREQ;BOS;  
MA;5;0.00;1,000.00;0.00;.00;0.00;0.00;0.00;0.00;0.00
Line 2: 500;98220;YPO_INV;KP;0017A47758;YNOUINU;
MARTHJJIU;;5;8,000.00;8,000.00;0.00;0.00;0.00;0.00;0.00;0.00;C4

1 个答案:

答案 0 :(得分:0)

只需将\s+(?!\s|^500)替换为multiline mode中的;

\s+(?!\s|^500)匹配一个或多个空格字符,这些空格字符后面没有其他空格或字符串500

示例:https://regex101.com/r/OJsAob/2