Python Поиск в текстовом файле по ключевому слову и печать соответствующей строки для нескольких ключевых слов

Я пытаюсь найти файл.txt, который содержит много посторонней информации по нескольким ключевым словам, которые содержат наиболее важную информацию. Я хотел бы найти слова и распечатать строку, в которой это слово.

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

fileName = input("Paste file name here")

with open(fileName) as inputFile:
    data = inputFile.readlines()
    inputFile.close()

for i, line in enumerate(data):
    searchPhrase1 = input("what phrase are you looking for?")
    if searchPhrase1 in line:
        for l in data[i:i:3]:
            print (l)
print

2 ответа

Вот один из моих старых скриптов Python для разбора текста.

Он использует немного regx, но должен получить вас, куда вы хотите пойти.

#!/usr/bin/python

import sys
import os
import re

def readFile( fileName ):
    try:
      file myFile = open( fileName, "r")
    except IOError:
      print "There was an error reading file"
      sys.exit()
    file_text = myFile.read()
    myFile.close()
    return file_text

def writeFile( fileName, fileContent ):
    ret = 1
    try:
        file myFile = open(fileName, "w")
    except IOError:
        print "There was an error writing to", fileName
        sys.exit()
    myFile.write(fileContent)
    myFile.close()
    return ret

str     textContents  = readFile("./myfile.txt")
list    textLineList = textContents.splitlines()

for textLine in textLineList:
    if re.match("(?:word1|word2|word3)*", textLine, re.I ):
        print textLine

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

Вы можете заменить свой:

if searchPhrase1 in line:

с

if any([x in line for x in ['your', 'search', 'phrases']]):

это проверит каждый элемент в списке, чтобы увидеть, существует ли в строке. любая функция вернет true, если есть хотя бы одно совпадение.

Другие вопросы по тегам