переменная grep в python - PullRequest
       9

переменная grep в python

4 голосов
/ 15 февраля 2011

мне нужно что-то вроде grep в python Я провел исследование и обнаружил, что модуль re подходит Мне нужно искать переменные для конкретной строки

Ответы [ 3 ]

6 голосов
/ 15 февраля 2011

Чтобы найти определенную строку в переменной, вы можете просто использовать in:

>>> 'foo' in 'foobar'
True
>>> s = 'foobar'
>>> 'foo' in s
True
>>> 'baz' in s
False
2 голосов
/ 15 февраля 2011

Использование re.findall будет самым простым способом.Вы можете искать только буквальную строку, если это то, что вы ищете (хотя ваша цель будет лучше обслуживаться оператором строки in, и вам нужно будет экранировать символы регулярного выражения), или любая строка, которую вы передадитеgrep (хотя я не знаю различий в синтаксисе между этими двумя понятиями, но я уверен, что есть различия).

>>> re.findall("x", "xyz")
['x']
>>> re.findall("b.d", "abcde")
['bcd']
>>> re.findall("a?ba?c", "abacbc")
['abac', 'bc']
1 голос
/ 12 августа 2015

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

def grep(large_string, substring):
    for line, i in enumerate(large_string.split('\n')):
        if substring in line:
            print("{}: {}".format(i, line))

Это напечатало бы только те строки, которые имеют вашу подстроку.Тем не менее, вы потеряли бы кучу контекста.Если вам нужен истинный grep, замените if substring in line на то, что использует модуль re для сопоставления регулярных выражений.

def highlight(large_string, substring):
    from colorama import Fore
    text_in_between = large_string.split(substring)
    highlighted_substring = "{}{}{}".format(Fore.RED, substring, Fore.RESET)
    print(highlighted_substring.join(text_in_between))

Это напечатает всю большую строку, но с подстрокой, которую вы ищетев красном.Обратите внимание, что вам нужно pip install colorama, чтобы оно заработало.Конечно, вы можете объединить два подхода.

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