Прежде всего вы должны взглянуть на два очень полезных модуля Python:
- fileinput : перебирать строки
из нескольких входных потоков
- optparse : мощная команда
анализатор параметров строки
fileinput поможет вам прочитать строки из нескольких файлов и даже изменить их, если вам нужно. Вы будете программировать, будет намного легче расширять и читать с этими инструментами
Вот пример:
import fileinput
import optparse
if __name__ == '__main__':
parser = optparse.OptionParser()
parser.add_option("-z", dest="z", help="Description here")
parser.add_option("-x", dest="x", help="Description here")
options, args = parser.parse_args()
search_term = args[0]
for line in fileinput.input(args[1:]):
process(line)
Для сопоставления вы можете использовать re.search вместо re.match . Пример из документации:
>>> re.match("o", "dog") # No match as "o" is not the first letter of "dog".
>>> re.search("o", "dog") # Match as search() looks everywhere in the string.
<_sre.SRE_Match object at ...>
Редактировать: ответить на комментарий Джессики
скажем, например, в моем файле, который я имел
слова: зоопарк, зоопарк и зоологический.
Если бы я набрал зоопарк в качестве типа поиска все 3
будет восстановлен, а не просто zo0
Вы можете заключить поисковый запрос в \ b, чтобы он соответствовал только слову, например:
>>> re.search(r'\bzoo\b', 'test zoo')
<_sre.SRE_Match object at 0xb75706e8>
>>> re.search(r'\bzoo\b', 'test zoos')
>>> re.search(r'\bzoo\b', 'test zoological')
\ b соответствует пустой строке, но только в начале или конце слова.
Итак, в вашем скрипте вы можете сделать это:
searchterm = r'\b%s\b' % searchterm
Примечание: значение r здесь важно, иначе вы должны выбрать '\'