Чтение двух строк одновременно с использованием enumerate () - PullRequest
0 голосов
/ 28 апреля 2020

Насколько я понимаю, функция enumerate необходима для моего скрипта. Но так как он читает только текстовый файл построчно, я не могу захватывать мой шаблон RegEx все время. Я хотел бы иметь возможность читать две строки одновременно при использовании перечисления. Возможно ли это?

import re
import itertools

a_list = []    

f = open("/Users/me/Desktop/scrape.txt", "r", encoding="utf8")
txt = f.readlines()

for k, line in enumerate(txt):
    if re.findall(r'\w+,\s*f\s*\.\s*\d\s*\d\s*-\s*\d\s*\d\s*-\s*\d\s*\d\s*\d\s*\d', line):
        a_list.append((k, line))

Я пытался (и не смог) использовать islice () примерно так:

import re
import itertools

a_list = []

f = open("/Users/me/Desktop/scrape.txt", "r", encoding="utf8")
txt = f.readlines()
**while True:
    next_two_lines = list(itertools.islice(f, 2))
    if not next_two_lines:
        break**

for k, line in enumerate(txt):
    if re.findall(r'\w+,\s*f\s*\.\s*\d\s*\d\s*-\s*\d\s*\d\s*-\s*\d\s*\d\s*\d\s*\d', line):
        a_list.append((k, line))

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете сделать

for k, line in enumerate(zip(txt[::2], txt[1::2])):
    if re.findall(r'\w+,\s*f\s*\.\s*\d\s*\d\s*-\s*\d\s*\d\s*-\s*\d\s*\d\s*\d\s*\d', "{} {}".format(line[0], line[1])):
        a_list.append((k, line))

Это будет повторять по кортежам, каждый из которых содержит две строки.

...