【发布时间】:2021-10-06 08:40:38
【问题描述】:
我需要在一个不大的文本文件中找到一个模式。 因此,将整个文件加载到 RAM 对我来说不是问题 - 正如 here 建议的那样:
我尝试了两种方式:
with open(inputFile, 'r') as file:
for line in file.readlines():
for date in dateList:
if re.search('{} \d* 1'.format(date), line):
或
with open(inputFile, 'r') as file:
contents = file.read()
for date in dateList:
if re.search('{} \d* 1'.format(date), contents):
事实证明,第二个要快得多。
除了我在第二种方法中使用了更少的循环这一事实之外,还有其他解释吗?
【问题讨论】:
-
很明显,在第二种情况下,您对整个文件文本执行一次匹配(
re.search只查找第一个匹配项)。在第一种情况下,您运行它的次数与文件中的行数一样多。第一段代码 sn -p 势必会花更多的时间。 -
正确。我错过了多个电话 - 谢谢
标签: python-3.x performance python-re