Поиск строки в строке Python (не в файле)

#python #regex #grep

#python #регулярное выражение #grep

Вопрос:

Я знаю, как это сделать с файлом, вы просто делаете file = file.open(f) f

 file = open("file.txt")
for line in file.readlines():
  if line.startswith("foo"):
    print line
  

Но теперь я читаю выходные данные процесса, подобного этому

 log = os.popen("log.sh").read()
  

Это выводится в виде строки, которую можно использовать при печати нормально, но если я делаю «для строки в журнале», это разбивает каждый символ, а не строку. И, поскольку это строка, атрибута .readlines() нет.

Моя конечная цель — иметь возможность «grep» для номера редакции в журнале и распечатать строку (и выше, и ниже)

Ответ №1:

 for line in log.splitlines():
    # whatever
  

Обратите внимание, что вам не нужно использовать f.readlines() для файла f .

 for line in f:
    # whatever
  

будет работать нормально.

Ответ №2:

У вас есть несколько вариантов:

Вариант 1:

 log = os.popen("log.sh").readlines()
  

Это дает список строк, которые вы можете обрабатывать точно так же, как вы делаете при чтении файла.

Вариант 2:

 log = os.popen("log.sh").read()
for line in log.splitlines(True):
   ...