16.04.2 не будет загружаться после полного обновления

Альтернативный подход с Python, который не требует регулярных выражений (хотя и не совсем надежных), заключается в обработке каждой строки в символе текстового файла по символу.

Основная идея того, как это работает: если мы видим двойную кавычку и флаг не поднят - поднимите флаг, и если мы увидим его снова, а флаг будет поднят - опустите флаг. Когда флаг поднят - так мы знаем, что мы находимся в двойных кавычках, поэтому мы можем хранить последующие символы. Как только флаг будет опущен, распечатайте то, что мы прочитали.

#!/usr/bin/env python
from __future__ import print_function
import sys

flag=False
quoted_string=[]
for line in sys.stdin:
    for char in line.strip():
        if char == '"':
           if flag:
               flag=False
               if quoted_string:
                  print("".join(quoted_string))
                  quoted_string=[]
           else:
               flag=True
               continue 
        if flag:
           quoted_string.append(char)

И тестовый прогон:

$ cat input.txt
first matched is "One". the second is here"Two "
and here are in second line" Three ""Four".

$ ./get_quoted_words.py < input.txt                                                                                      
One
Two 
 Three 
Four
131
задан 24 July 2017 в 16:18

0 ответов

Другие вопросы по тегам:

Похожие вопросы: