Python Поиск в текстовом файле по ключевому слову и печать соответствующей строки для нескольких ключевых слов - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь найти файл .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 ]

0 голосов
/ 31 августа 2018

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

Он использует небольшой регкс, но должен привести вас туда, куда вы хотите.

#!/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

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

0 голосов
/ 31 августа 2018

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

if searchPhrase1 in line:

с

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...