我有一个问题。我想要做的是对数据进行排序并在某些点创建新行。目前,我的代码如下所示:
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', '')
