【发布时间】:2020-02-28 14:09:42
【问题描述】:
有没有办法在 python 中搜索文本文件中的短语而不必使用 forloops 和 if 语句,例如:
for line in file:
if line in myphrase:
do something
这似乎是一种非常低效的文件浏览方式,因为如果我理解正确,它不会并行运行,而是迭代运行。 re.search 是一个更有效的系统吗?
【问题讨论】:
-
你考虑过正则表达式吗?它可能仍然可以线性工作(即单个线程作为一个系列扫描文本),但任何循环都会对您隐藏。循环并没有那么糟糕,事实上,它们是计算机最擅长的。或者,您可以强制并行化处理文件不同部分的一系列线程,但随后您必须管理它们的同步和串扰,这可能超过您在第一名。
-
如果您有任何效率问题,也许您应该考虑任何类型的预处理。它可以帮助你。
-
@ThomasKimber 我看过它们,但听说它们在大文件上也可能很慢。让我感到奇怪的是,这里没有并行化方法。
-
我怀疑正则表达式会为您节省任何时间。有些人指出,一次读取文件的内容会更快,这对于合理大小的文件来说是正确的。但是,如果它是一个大文件,则将整个文件读入内存也会导致性能下降。我个人会采取简单的方法,并完全按照您在这里所做的事情。这很方便,因为它按换行符拆分,这可能不是您的短语的一部分。如果您必须通过读取更大的块来进行优化,您必须注意您可能会在块边界处拆分您的短语
标签: python python-3.x