Python 搜索字符串并替换下一行中的字符

标签 python regex sed

在文本文件中,我想搜索包含特定文本的行,并且在下一行我想用 #(注释掉)替换行的开头:

示例 - 之前:

#test search 123
text to be commented out
#test 123

示例 - 想要:

#test search 123
#text to be commented out
#test 123

我可以通过 sed 做到这一点:

sed -i '/^#test search 123/!b; n; s/^/#/' test_file

但我想知道我是否能够在 python 中本地完成它。

最佳答案

import os

outfile = open('bla.txt.2', 'w')

search = "#test search 123"
flag = 0

with open('bla.txt', 'r') as f:

    for line in f:
        if flag == 1:
            mod_line = "#" + line
            outfile.write(mod_line)
            flag = 0
            continue

        outfile.write(line)
        if (search in line):
            flag = 1

outfile.close()

os.remove('bla.txt')
os.rename('bla.txt.2', 'bla.txt')

关于Python 搜索字符串并替换下一行中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30936032/

相关文章:

python - 数组索引在 Python 中随机开始

java - 是否存在类似 RE2 的 Java 正则表达式库?

java - 用于限制验证十六进制值从 0000 到 7F7F 的正则表达式

bash - sed 匹配比预期更贪婪

python - 在达到最大目标数量后,如何停止 pygame 中的事件循环?

python - 是否有等同于 (i+1)%N 的 Python 切片符号?

python - 如何在 Django REST 框架中使用事务?

regex - 如何进行复杂的多缓冲区搜索?

Bash - 引用的变量扩展与 sed 混合产生错误的替换

string - Shell 脚本 - 从变量中删除第一个和最后一个引号 (")