Как начинать новую строку после каждого появления определенной подстроки в текстовом файле?

#python-3.x

#python-3.x

Вопрос:

У меня есть этот текстовый файл с именем «Poo.txt «: «Если вы случайно читали другую книгу о Кристофере Робине, возможно, вы помните, что у него когда-то был лебедь (или у лебедя был Кристофер Робин, я не знаю, какой именно) и что он. используется для вызова этого swan Pooh. это было давно, и когда мы прощались, мы забрали название с собой, так как думали, что лебедю оно больше не понадобится. Ну, когда Эдвард Беар сказал, что хотел бы иметь захватывающее имя для себя, Кристофер Робин сразу, не задумываясь, ответил, что он Винни-Пух. И он был. итак, поскольку я объяснил часть Pooh, теперь я объясню остальное»

И мне нужно, чтобы после подстроки «en» начиналась новая строка. Таким образом, выходные данные будут в новом файле: «outfileq2.txt » и текст в нем будет таким, как показано на рисунке. вывод в «outfileq2.txt «

Я пробовал что-то вроде этого:

 outfname = 'outfileq2.txt'
with open("Poo.txt") as f:

    with open(outfname, "w") as f1:
        f1.writelines()
  

Ответ №1:

После прочтения каждой строки вы могли бы использовать регулярные выражения для изменения вашей строки.

 import re

outLine = re.sub("em","emn"", line)
  

Ответ №2:

Вы можете использовать этот код, чтобы проверить, присутствует ли подстрока в данном слове или нет, а затем n каждый раз, когда вы получаете подстроку

 def exactMatch(text, lenText, curr_pos, pat, curr_pos_pat, lenPat):

    if curr_pos == lenText:
        return False
    if curr_pos_pat == lenPat:
        return True
    if text[curr_pos] == pat[curr_pos_pat]:
        return exactMatch(text, lenText, curr_pos   1, pat, curr_pos_pat   1,lenPat)
    return False
def contains(text, lenText, curr_pos, pat, curr_pos_pat, lenPat):
    if curr_pos == lenText:
        return False
    if text[curr_pos] == pat[curr_pos_pat]:
        if exactMatch(text, lenText, curr_pos, pat, 0, lenPat):
            return 1
        else:
            return contains(text, lenText, curr_pos   1, pat, curr_pos_pat, lenPat)
    else:
        return contains(text, lenText, curr_pos   1, pat, curr_pos_pat, lenPat)
text = input()
pat = input()
lenText = len(text)
lenPat = len(pat)
curr_pos_pat = 0
print(contains(text, lenText, 0, pat, curr_pos_pat, lenPat))