繁体   English   中英

两点之间的分割线

[英]Split Lines between Two Points

我有一个文件,每次在不同行数的开头和结尾都有一些随机单词。 我试图只阅读第一点 *** 合成测试用例开始 *** 和第二点 *** 合成测试用例结束 *** 之间的行。 我 go 如何写这个? 我打算使用 re.search 吗?如果是的话,我 go 如何对文件执行此操作?

您可以使用以下逻辑:

inp = """START OF SYNTHETIC TEST CASE
line 1
line 2
line 3
END OF SYNTHETIC TEST CASE"""

content = re.search(r'\bSTART OF SYNTHETIC TEST CASE\b\s*(.*?)\s*END OF SYNTHETIC TEST CASE\b', inp, flags=re.S)
print(content.group(1))

这打印:

line 1
line 2
line 3

当文件适合 memory 时,正则表达式很好。在不适合的情况下,通常的习惯用法(在任何语言中)是创建一个只包含感兴趣行的新文件。 在 Python 中,假设你的输入文件是“input.txt”,你的 output 是“output.txt”,它看起来像这样:

with open('input.txt') as f_in, open('output.txt', 'w') as f_out:
    for line in f_in:
        if line[:-1] == '*** START OF SYNTHETIC TEST CASE ***':
            break
    for line in f_in:
        if line[:-1] == '*** END OF SYNTHETIC TEST CASE ***':
            break
        f_out.write(line)

上面的一些需要注意的地方:

  1. with语句确保一旦超出逻辑,这两个文件都将被关闭。 这对于f_out尤其重要,因为它的缓冲区可能需要刷新到磁盘。
  2. 读取的行将以\n结尾,因此对标记字符串的测试使用line[:-1] ,从行中剪掉最后一个字符。 如果你想从两端删除所有空格,你也可以使用line.strip()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM