免责声明:我对 python 还很陌生!

如果我想要一个文件的所有行,直到(编辑:并包括)包含一些字符串 stopterm 的行,有没有办法为它使用列表语法?我希望会有类似的东西:

usefullines = [line for line in file until stopterm in line]

现在,我有
usefullines = []
for line in file:
    usefullines.append(line)
    if stopterm in line:
        break

这不是世界末日,但由于 Python 语法的其余部分非常简单,我希望有 1 个想法-> 1 个 Python 行映射。

最佳答案

from itertools import takewhile
usefullines = takewhile(lambda x: not re.search(stopterm, x), lines)

from itertools import takewhile
usefullines = takewhile(lambda x: stopterm not in x, lines)

这是一种保持 stopterm 行的方法:
def useful_lines(lines, stopterm):
    for line in lines:
        if stopterm in line:
            yield line
            break
        yield line

usefullines = useful_lines(lines, stopterm)
# or...
for line in useful_lines(lines, stopterm):
    # ... do stuff
    pass

关于Python:项目的项目直到项目中的停止项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/337223/

10-10 11:01