У меня есть текстовый файл следующего формата.(steps.txt)
This is the first line of the file.
here we tell you to make a tea.
step 1
Pour more than enough water for a cup of tea into a regular pot, and bring it to a boil.
step
2
This will prevent the steeping water from dropping in temperature as soon as it is poured in.
step 3
When using tea bags, the measuring has already been done for you - generally it's one tea bag per cup.
Я пытаюсь получить шаги в словаре, например, steps_dic ['step 1'] = 'Налейте больше воды для чашки чая в обычный горшок и принеситеэто до кипения.и так далее.** иногда номер шага # будет в следующей строке ** Я читаю файл и написал обертку для итератора в python для анализа строк в коде, а также для проверки hasnext ().
def step_check(line,prev):
if line:
self.reg1 = re.match(r'^step(\d|\s\d)',line)
if self.reg1:
self._reg1 = self.reg1.group()
# print("in reg1: {} ".format(self._reg1))
if line and prev:
self.only_step = re.match(r'^step$',prev)
if self.only_step:
self._only_step = self.only_step.group()
# print("int only step : {} ".format(self._only_step))
self.only_digit = re.match(r'\d', line)
if self.only_digit:
self._only_digit = self.only_digit.group()
# print("in only digit: {} ".format(self._only_digit))
if self._reg1:
self.step = self._reg1
# print("Returning.. {} ".format(self.step))
return self.step
if self._only_step:
if self._only_digit:
# print("Only Step : {} ".format(self._only_step))
# print ("Only Digit: {} ".format(self._only_digit))
self.step =self._only_step+" "+self._only_digit
# print("Returning.. {} ".format(self.step))
return self.step
else:
# print("Returning.. {} ".format(self.step))
return self.step
with open(file_name, 'r', encoding='utf-8') as f:
self.steps_dict = dict()
self.lines = hn_wrapper(f.readlines())#Wrapper code not including
self.prev,self.line = None,self.lines.next()
self.first_line = self.line
self.prev, self.line = self.line, self.lines.next()
try:
while(self.lines.hasnext()):
self.prev,self.line = self.line,self.lines.next()
print (self.line)
self.step_name = self.step_check(self.line,self.prev)
if self.step_name:
self.steps_dict[self.step_name]=''
self.prev, self.line = self.line, self.lines.next()
while(not self.step_check(self.line,self.prev)):
self.steps_dict[self.step_name] = self.steps_dict[self.step_name]+ self.line + "\n"
self.prev,self.line = self.line,self.lines.next()
Я могу получить только step_dic ['step 1'] = ...... step_dic ['step 3'] = .......... но шаг 2 пропускается.Мне нужно извлечь для step_dic ['step 2'] также.Я не могу понять, как ведёт буфер для текста.