在查找关键字时在文件中写入一行

时间:2017-02-08 16:46:01

标签: python

我正在尝试创建一个函数,当它在文件中找到一些文本时会写一行。 示例:它在.txt文件中找到“hello”,然后写入“嗨!”在以下行中。 还有其他东西,我希望它写“嗨!” 不是第一次它找到“hello”但是第二次。 这是我一直在尝试的,但我不知道这个想法是否正确。有帮助吗?

def line_replace(namefilein):
    print namefilein
    filein=open(namefilein, "rw")
    tag="intro"
    filein.read()
    for line in filein:
        if tag=="second" or tag=="coord":
            try:
                filein.write("\n\n %s" %(text-to-be-added))
                print line
            except:
                if tag=="coord":    
                    tag="end"
                else:
                    tag="coord"

        if "           text-to-find" in line:
            if tag=="intro":
                tag="first"
            elif tag=="first":
                tag="second"
    filein.close()

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

def line_replace(namefilein):

    new_content = ''
    first_time = False
    with open(namefilein, 'r') as f:
        for line in f:
            new_content += line
            if 'hello' in line:
                if first_time:
                    new_content += 'Hi!' + '\n'
                else:
                    first_time = True


    with open(namefilein, 'w') as f:
        f.write(new_content)

看看我使用的是with语句,在Python中是一个上下文管理器,所以这意味着,在这种情况下,当代码块被执行时,文件将自动关闭。

假设您有一个文件my_file.txt,其内容为:

hello
friend
this
is
hello

让我们说你的文件与包含你代码的python文件在同一个目录中,所以调用:

line_replace('my_file.txt')

将产生以下输出:

hello
friend
hello
Hi!
is