On Oct 21, 1:53 pm, "J. Cliff Dyer" <[EMAIL PROTECTED]> wrote: > On Tue, 2008-10-21 at 10:28 -0700, Ben wrote: > > Hello All: > > > I am new to Python, and I love it!! I am running 2.6 on Windows. I > > have a flat text file here is an example of 3 lines with numbers > > changed for security: > > > 999999999088869199999999990200810999999 > > 999999999088869199999999990200810999999 > > 999999999088869199999999990200810999999 > > > I want to be able to replace specific slices with other values. My > > code below reads a file into a list of strings. Since strings are > > immutable I can't assign different values to a specific slice of the > > string. How can I accomplish this? I read some posts on string > > formatting but I am having trouble seeing how I can use those features > > of the language to solve this problem. > > > The code below just puts an 'R' at the beginning of each line like > > this: > > > R999999999088869199999999990200810999999 > > R999999999088869199999999990200810999999 > > R999999999088869199999999990200810999999 > > > But what I want to do is change the middle of the string. Like this: > > > R999999999088869CHANGED99990200810999999 > > R999999999088869CHANGED99990200810999999 > > R999999999088869CHANGED99990200810999999 > > Well, it depends on what you want. Do you want to replace by location > or by matched substring? One of the following functions might help. > > lines = ['999999999088869199999999990200810999999' > '99999999088869199999999990200810999999' > '9999999088869199999999990200810999999'] > > def replace_by_location(string, replacement, start, end): > return string[:start] + replacement + string[end:] > > def replace_by_match(string, substr, replacement): > return replacement.join(string.split(substr)) > > location_lines = [replace_by_location(x, 'CHANGED', 15, 22) for x in lines] > match_lines = [replace_by_match(x, '1999999', 'CHANGED') for x in lines] > > print location_lines > print match_lines > > Cheers, > Cliff > > > #My Current Code > > > # read the data file in as a list > > F = open('C:\\path\\to\file', "r") > > List = F.readlines() > > F.close() > > > #Loop through the file and format each line > > a=len(List) > > while a > 0: > > > List.insert(a,"2") > > a=a-1 > > > # write the changed data (list) to a file > > FileOut = open("C:\\path\\to\\file", "w") > > FileOut.writelines(List) > > FileOut.close() > > > Thanks for any help and thanks for helping us newbies, > > > -Ben > > -- > >http://mail.python.org/mailman/listinfo/python-list > >
Thanks for your help, this explains it I needed a little mental jump start. -Ben -- http://mail.python.org/mailman/listinfo/python-list