Skip to main content
 首页 » 编程设计

Python 正则表达式删除\n

2024年10月24日40wuhuacong

我有一个问题。我想要做的是对数据进行排序并在某些点创建新行。目前,我的代码如下所示:

from __future__ import print_function 
import re 
NDoc = raw_input("Enter name of new document ")+".txt" 
log = open(NDoc, 'w') 
file = raw_input("Enter a file to be sorted ") 
extfile = file+".txt" 
xfile = open(file+".txt") 
 
for line in xfile: 
    l=line.strip() 
    l=re.sub("\n","",l) 
    n=re.sub("(\B)(?=((MTH|HST|ENG)[|]))","\n",line) 
 
    if len(n) > 0: 
        nl=n.split("\n") 
        for item in nl: 
                log.write(item+"\n") 
                    #print(item) 
 
print ("The data from",extfile,"has been sorted into",NDoc) 

一切正常,除了在第三个学期 (ENG|) 之后我的数据中出现了一个新行。例如,如果我的数据文件是这样的:

MTH|lettersandnumbersHST|lettersandnumbersENG|lettersandnumbers 
MTH|lettersandnumbersHST|lettersandnumbersENG|lettersandnumbers 
MTH|lettersandnumbersHST| 

我希望它看起来像这样:

MTH|lettersandnumbers 
HST|lettersandnumbers 
ENG|lettersandnumbers 
MTH|lettersandnumbers 
HST|lettersandnumbers 
ENG|lettersandnumbers 
MTH|lettersandnumbers 
HST| 

但它却给我这个:

MTH|lettersandnumbers 
HST|lettersandnumbers 
ENG|lettersandnumbers 
 
MTH|lettersandnumbers 
HST|lettersandnumbers 
ENG|lettersandnumbers 
 
MTH|lettersandnumbers 
HST| 

现在我认为执行 l=re.sub("\n","",l) 会在添加新的\n 之前将所有\n 替换为空,所以为什么仍然存在正在制作额外的一行,但仅在 ENG 之后?

提前感谢您的任何见解。

请您参考如下方法:

您使用的线路名称有误。

l=line.strip() 
l=re.sub("\n","",l) 

应该是

line=line.strip() 
line=re.sub("\n","",line) 

或者只是

line=line.strip().replace('\n', '')