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, если есть хотя бы одно совпадение.