I can't claim to have studied your problem in detail, but I get reasonable results from the following:
filename = 'Errors.txt' S = open(filename,'r').read().split() f = lambda x: (x[0]=='@' and x[6:] + '.0') or (x=='/' and x + '\n') or x open(filename,'w').write(' '.join(map(f,S))) HTH ------------------------------------------------------------------------- [EMAIL PROTECTED] wrote in message news:<[EMAIL PROTECTED]>... > Hello NG, > > probably this is a basic question, but I'm going crazy... I am unable > to find an answer. Suppose that I have a file (that I called "Errors.txt") > which contains these lines: > > MULTIPLY > 'PERMX' @PERMX1 1 34 1 20 1 6 / > 'PERMX' @PERMX2 1 34 21 41 1 6 / > 'PERMX' @PERMX3 1 34 1 20 7 14 / > 'PERMX' @PERMX4 1 34 21 41 7 14 / > 'PERMX' @PERMX5 1 34 1 20 15 26 / > 'PERMX' @PERMX6 1 34 21 41 15 26 / > 'PERMX' @PERMX7 1 34 1 20 27 28 / > 'PERMX' @PERMX8 1 34 21 41 27 28 / > 'PERMX' @PERMX9 1 34 1 20 29 34 / > 'PERMX' @PERMX10 1 34 21 41 29 34 / > 'PERMX' @PERMX11 1 34 1 20 35 42 / > 'PERMX' @PERMX12 1 34 21 41 35 42 / > 'PERMX' @PERMX13 1 34 1 20 43 53 / > 'PERMX' @PERMX14 1 34 21 41 43 53 / > 'PERMX' @PERMX15 1 34 1 20 54 61 / > 'PERMX' @PERMX16 1 34 21 41 54 61 / > / > > I would like to replace all the occurrencies of the "keywords" (beginning > with the @ (AT) symbol) with some floating point value. As an example, this > is what I do: > > # --- CODE BEGIN > > import re > import string > > # Set Some Dummy Parameter Values > parametervalues = range(1, 17) > > # Open And Read The File With Keywords > fid = open("Errors.txt","rt") > onread = fid.read() > fid.close() > > # Find All Keywords Starting with @ (AT) > regex = re.compile("[EMAIL PROTECTED]", re.IGNORECASE) > keywords = regex.findall(onread) > > counter = 0 > > # Try To Replace The With Floats > for keys in keywords: > pars = parametervalues[counter] > onread = string.replace(onread, keys, str(float(pars))) > counter = counter + 1 > > # Write A New File With Replaced Values > fid = open("Errors_2.txt","wt") > fid.write(onread) > fid.close() > > # --- CODE END > > > Now, I you try to run this little script, you will see that for keywords > starting from "@PERMX10", the replaced values are WRONG. I don't know why, > Python replace only the "@PERMX1" leaving out the last char of the keyword > (that are 0, 1, 2, 3, 4, 5, 6 ). These values are left in the file and I > don't get the expected result. > > Does anyone have an explanation? What am I doing wrong? > > Thanks to you all for your help. > > Andrea. > > ------------------------------------------------------------------------------------------------------------------------------------------ > Message for the recipient only, if received in error, please notify the > sender and read http://www.eni.it/disclaimer/ -- http://mail.python.org/mailman/listinfo/python-list