Подтвердить что ты не робот

Как извлечь информацию между двумя уникальными словами в большом текстовом файле

У меня около 150 текстовых файлов, заполненных символьной информацией. Каждый файл содержит два уникальных слова() alpha и bravo, и я хочу извлечь текст между этими уникальными словами и записать его в другой файл.

Вручную я могу CTRL + F для двух слов и скопировать текст между ними, просто хочу знать, как это сделать, используя программу (желательно Python) для многих файлов.

4b9b3361

Ответ 1

Вы можете использовать регулярные выражения для этого.

>>> st = "alpha here is my text bravo"
>>> import re
>>> re.findall(r'alpha(.*?)bravo',st)
[' here is my text ']

Мой файл test.txt

alpha here is my line
yipee
bravo

Теперь, используя открыть, прочитайте файл и примените regular expressions.

>>> f = open('test.txt','r')
>>> data = f.read()
>>> x = re.findall(r'alpha(.*?)bravo',data,re.DOTALL)
>>> x
[' here is my line\nyipee\n']
>>> "".join(x).replace('\n',' ')
' here is my line yipee '
>>>

Ответ 2

a = 'alpha'
b = 'bravo'
text = 'from alpha all the way to bravo and beyond.'

text.split(a)[-1].split(b)[0]
# ' all the way to '

Ответ 3

str.find и его брат rfind имеют start и end args.

alpha = 'qawsed'
bravo = 'azsxdc'
startpos = text.find(alpha) + len(alpha)
endpos = text.find(bravo, startpos)
do_something_with(text[startpos:endpos]

Это самый быстрый способ, если содержащийся текст короткий и почти спереди.

Если содержащийся текст является относительно большим, используйте:

startpos = text.find(alpha) + len(alpha)
endpos = text.rfind(bravo)

Если содержащийся текст короткий и ближе к концу, используйте:

endpos = text.rfind(bravo)
startpos = text.rfind(alpha, 0, endpos - len(alpha)) + len(alpha)

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

Ответ 4

Вместо использования регулярного выражения используйте метод Python string.find.

>>>> unique_word_a = 'alpha'
>>>> unique_word_b = 'bravo'
>>>> s = 'blah blah alpha i am a good boy bravo blah blah'
>>>> your_string = s[s.find(unique_word_a)+len(unique_word_a):s.find(unique_word_b)].strip()
i am a good boy