replace - python replacement for xml -


i have file, ff_tuningconfig_ampki.xml, contains of records such as:

<kiconfig active="%{active}" id="amp_ret_w_lin_suspicious_multiple_login_in_short_period$kiconfig"/> <kiconfig active="%{active}" id="amp_ret_w_lin_unusual_session_hour_of_day$kiconfig"/> 

i have following code:

def replace_content(path,se,search,string_replace):     root, dirs, files in os.walk(path):         filename in files:             if((se in filename)):                 file=open(os.path.join(root, filename),'r')                 lines = file.readlines()                 file=open(os.path.join(root, filename),'w')                  line in lines:                     if search in line:                     #print "found="+line                         words=line.split('=')                     #    print words                      #   print "line=" + words[0] +"="+ "8\n"                          line=line.replace(line,string_replace)                     #print "after="+line                     file.write(line)                 file.close()                 print (os.path.join(root,filename) + " replaced")  replace_content(path,'ff_tuningconfig_ampki.xml','<kiconfig active="%{active}"','<kiconfig active="true"') 

i getting below:

active="true"      <thresholds> 

instead of:

<kiconfig active="true" id="amp_ret_w_lin_unusual_session_hour_of_day$kiconfig"/> 

your problem line=line.replace(line,string_replace). take @ documentation str.replace()

line = line.replace(search,string_replace) 

to test code, have written separate script part seemed failing.

# test input s = '''<kiconfig active="%{active}" id="amp_ret_w_lin_suspicious_multiple_login_in_short_period$kiconfig"/> <kiconfig active="%{active}" id="amp_ret_w_lin_unusual_session_hour_of_day$kiconfig"/>'''  lines = s.split('\n')  # parameters search, string_replace = '<kiconfig active="%{active}"','<kiconfig active="true"'  # part of code seems failing line in lines:     if search in line:         line = line.replace(line, string_replace)     print(line) 

that lets focus on problem , makes easy , fast modify test code. once have functionality working, copy , paste working code. if part of code works have eliminated source errors , can test other parts.


as aside, no need test if search string in line before attempting replace. if search string isn't in line, str.replace() return line without modification.


Comments