Удалить определенный текстовый шаблон в python - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь избавиться от определенного шаблона текста в моем файле .txt, который выглядит примерно так:


mystring = '''

example deletion words
in the first block

First sentence to keep.

example deletion words
in the second block

Second sentence to keep.

example deletion words
in the third block

Third sentence to keep.

example deletion words
in the fourth block'''

Мой желаемый результат будет выглядеть так:


"Первое предложение сохранить.

Второе предложение сохранить.

Третье предложение сохранить."


Так что же я? Я пытаюсь избавиться от всего текста между строками «пример» и «блок», включая сами строки. Любая идея, как я мог бы go об этом либо в R, либо в Python?


Извините, что забыл включить мою попытку с регулярным выражением, и просто спросил неожиданно и спасибо людям, которые приняли усилие ответить независимо. Мое рабочее решение с использованием regex и re package в python:

import re

cleanedtext = re.sub('\nexample.*?block','',mystring, flags=re.DOTALL)

print(cleanedtext)

Ответы [ 2 ]

2 голосов
/ 24 января 2020

В R вы можете использовать str_remove_all из stringr

stringr::str_remove_all(string, "example.*block")
 #[1] " First sentence to keep.\nSecond sentence to keep.\nThird sentence to keep.\n"

, что является сокращением для

stringr::str_replace_all(string, "example.*block", "")

data

string <- "example deletion words in the first block First sentence to keep.
           example deletion words in the second blockSecond sentence to keep.
           example deletion words in the third blockThird sentence to keep.
           example deletion words in the fourth block"
1 голос
/ 24 января 2020

Вы уже знаете шаблон заранее или шаблон когда-либо меняется? Если нет, то вы можете прочитать текстовый файл, go построчно, разделить предложение, чтобы легко манипулировать, а затем искать шаблон. Для строк, у которых его нет, вы можете объединить его с новой строкой. То, что я имел ниже, казалось, работало:

f = open("mytext.txt", "r")
final = ""
for line in f:
    words = line.split(" ")
    if(words[0] == "example" or words[len(words) - 1] == "block\n"):
        continue
    else:
        final = final + line
print(final)

И результат, который я получил, был:

First sentence to keep.


Second sentence to keep.


Third sentence to keep.
...