Python替换行中的特定单词

Python替换行中的特定单词,python,Python,我在flask中有一个应用程序,我正在读取两种颜色,但当我尝试替换它们时,它会删除我.txt文件中的所有内容,但我尝试替换的行除外 这是我的python文件: from flask import Flask,render_template,flash,request,redirect import os import sys app = Flask(__name__) def word_one(): with open('line.txt', 'r+') as f: f

我在flask中有一个应用程序,我正在读取两种颜色,但当我尝试替换它们时,它会删除我.txt文件中的所有内容,但我尝试替换的行除外

这是我的python文件:

from flask import Flask,render_template,flash,request,redirect
import os
import sys
app = Flask(__name__)

def word_one():
    with open('line.txt', 'r+') as f:
        for i, line in enumerate(f):
          if i == 6: 
            found_color = line.find('color')
            if found_color != -1:
               color_one = line[found_color+len('color:'):]
               print ('Color_One: '), color_one
    return color_one


def word_two():
    with open('line.txt', 'r+') as f:
        for i, line in enumerate(f):
          if i == 7: 
            found_color = line.find('color')
            if found_color != -1:
               color_two = line[found_color+len('color:'):]
               print ('Color_Two: '), color_two
    return color_two

@app.route('/', methods=['POST'])
def change_line():
    error= 'Sucessfull.'
    first_color = word_one()
    second_color = word_two()
    try:
        if request.method =="POST":
            change_first_color = request.form ['first_color']
            change_second_color = request.form['second_color']
            filedata= None
            with open('line.txt','r') as f:
                filedata = f.readlines()

                filedata[6] = filedata[6].replace(first_color , change_first_color + "\n" )
                filedata[7] = filedata[7].replace(second_color , change_second_color + "\n" )

            with open('line.txt','w') as f:
                f.write(filedata[6])
                f.write(filedata[7])


    except BaseException as e:
        print e
    return render_template('line.html', error=error, change_first_color=change_first_color,
                            change_second_color=change_second_color)

@app.route('/')
def showLine():
    change_first_color = word_one()
    change_second_color = word_two()
    return render_template('line.html', change_first_color=change_first_color,
                            change_second_color=change_second_color)

if __name__ == '__main__':
    app.run(debug=True)
这是我的文本文件:

/////
/////
/////
////
/////
/////////
    color green
    color green
如您所见,我想将“绿色”替换为黄色,将另一个“绿色”替换为红色,但这样做时,会删除文件中的所有“/”,只留下最后两行

有人能帮我解决这个问题吗提前感谢

这是意料之中的:

    with open('line.txt','r') as f:
        filedata = f.readlines()

        filedata[6] = filedata[6].replace(first_color , change_first_color + "\n" )
        filedata[7] = filedata[7].replace(second_color , change_second_color + "\n" )

    with open('line.txt','w') as f:
        f.write(filedata[6])
        f.write(filedata[7])
更改
filedata
的第6行和第7行,再次打开/截断该文件,然后只写这两行。把剩下的扔了

在您的情况下,修复很简单。因为您已经根据需要更改了行数组,所以只需写回完整的行,并根据您的更改进行修改。因此,将最后一部分更改为:

        with open('line.txt','w') as f:
            f.writelines(filedata)
这是意料之中的:

    with open('line.txt','r') as f:
        filedata = f.readlines()

        filedata[6] = filedata[6].replace(first_color , change_first_color + "\n" )
        filedata[7] = filedata[7].replace(second_color , change_second_color + "\n" )

    with open('line.txt','w') as f:
        f.write(filedata[6])
        f.write(filedata[7])
更改
filedata
的第6行和第7行,再次打开/截断该文件,然后只写这两行。把剩下的扔了

在您的情况下,修复很简单。因为您已经根据需要更改了行数组,所以只需写回完整的行,并根据您的更改进行修改。因此,将最后一部分更改为:

        with open('line.txt','w') as f:
            f.writelines(filedata)