使用 enumerate() 一次读取两行
Reading two lines at a time while using enumerate()
就我现在所见,我的脚本需要枚举函数。但是因为它只能逐行读取 txt 文件,所以我无法一直捕获我的 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))
你可以做到
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))
这将遍历元组,每个元组包含两行。
就我现在所见,我的脚本需要枚举函数。但是因为它只能逐行读取 txt 文件,所以我无法一直捕获我的 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))
你可以做到
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))
这将遍历元组,每个元组包含两行。