我正在尝试编写python脚本来查找超过1000行的文件中的字符串,并在该字符串匹配后删除几行(10)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我正在尝试编写python脚本来查找超过1000行的文件中的字符串,并在该字符串匹配后删除几行(10)相关的知识,希望对你有一定的参考价值。

在fastfile下面(超过1000行)我想搜索字符串“Validate repo test2”并删除从“Validate repo test2”开始到字符串“end”的行并将内容重写为新文件。

中fastfile

desc“验证repo test1” lane:validate_repo do lint_source execute_tests validate_docs ensure_tool_name_formatting ensure_code_samples ensure_special_docs_code_samples ensure_code_snippets ensure_actions_config_items_formatting 结束

desc“验证repo test2” lane:validate_repo do lint_source execute_tests validate_docs ensure_tool_name_formatting ensure_code_samples ensure_special_docs_code_samples ensure_code_snippets ensure_actions_config_items_formatting 结束

desc“验证repo test3” lane:validate_repo do lint_source execute_tests validate_docs ensure_tool_name_formatting ensure_code_samples ensure_special_docs_code_samples ensure_code_snippets ensure_actions_config_items_formatting 结束

答案

你可以这样做:

with open('Fastfile', 'r') as f_orig, open('Fastfile_new', 'w') as f_new:
    skipping = False
    for line in f_orig:
        if 'Validate repo test2' in line:
            skipping = True
        if not skipping:
            f_new.write(line)
        if line[:3] == 'end':
            skipping = False
另一答案

我是新手,所以我不确定如何归功于作者,但这对我很有用:Regex Match all characters between two strings谢谢@ zx81

你可以使用正则表达式:

(?s)(?<="Validate repo test[d]*").*(?=end)

http://www.rexegg.com/regex-modifiers.html#dotall第一部分将启用“全点模式”,正则表达式的其余部分说“选择所有字符”“验证回购测试[ d] *”“和”结束“”。从那里你可以使用正则表达式删除所有这些。总之它看起来有点像这样:

import re

fileText = file.read()
regex = re.compile(r""Validate repo test[d]*"", re.DOTALL)
result = re.sub(regex, "", fileText)

file.write(result)
另一答案

也许有很多解决方案,但我认为以下代码也可以解决您的问题。

need_delete = False
with open(path_to_old_file, 'r') as fin, open(path_to_new_file, 'w+') as fout :
    for line in fin:
        if line.endswith('"Validate repo test2"
'):
            need_delete = True
        if need_delete and not line.strip():
            need_delete = False
            continue
        if not need_delete:
            fout.write(line)

我希望这能帮到您。

以上是关于我正在尝试编写python脚本来查找超过1000行的文件中的字符串,并在该字符串匹配后删除几行(10)的主要内容,如果未能解决你的问题,请参考以下文章

用 Python 自动填写 Web 浏览器表单

用于查找第n个素数的Python脚本

Python [Errno 13] 权限被拒绝:

在不了解页面结构的情况下进行网页抓取

SQL 存档脚本

批处理脚本查找进程PID [关闭]