У меня проблема. То, что я пытаюсь сделать, это сортировать данные и создавать новые строки в определенных точках. В настоящее время мой код выглядит следующим образом:Python Regex Remove n
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.replace ("\ п", "")' – heinst
Я заметил, что вы присвоить ссылку 'L', а затем никогда не использовать его снова. Возможно, это должно быть «строка»? – TigerhawkT3