[英]Python: finding and replacing a symbol in a file on if followed by specific word
[英]Python replacing an specific word in a line
我在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 filedata
,然后再次打開/截斷了文件,只寫了這兩行。 放棄其余的。
就您而言,修復很簡單。 由於您已根據需要更改了行的排列,因此只需寫回用更改更改的全部行即可。 因此,將最后一部分更改為:
with open('line.txt','w') as f:
f.writelines(filedata)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.