>Michael Yanowitz wrote: >> Hello: >> >> I am hoping someone knows if there is an easier way to do this or someone >> already implemented something that does this, rather than reinventing the >> wheel: >> I have been using the string.replace(from_string, to_string, len(string)) >> to replace names in a file with their IP address. >> For example, I have definitions file, that looks something like: >> 10.1.3.4 LANDING_GEAR >> 20.11.222.4 ALTIMETER_100 >> 172.18.50.138 SIB >> 172.18.50.138 LAPTOP >> 172.18.51.32 WIN2000 >> 127.0.0.1 LOCALHOST >> >> and I have a text file (a Python script) that has these names in the file. >> In most cases the string.replace() command works great. But there is one >> instance which it fails: >> Suppose I had in the file: >> if (LAPTOP_IS_UP()): >> It would replace the string with: >> if ("172.18.50.138"_IS_UP()): >> >> Is there any easy way to avoid this, only replace if a whole word >> matches? >> I probably need something which determines when a word ends, and I will >> define >> a word as containing only 'A'-'Z','a'-'z','0'-'9','_' . As long as the >> string >> contains more of the word digits after the match, don't replace? >> >> Thanks in advance: >> Michael Yanowitz > >You need regular expressions for this. Use the re module. >http://docs.python.org/lib/module-re.html > >from the docs: > >re.sub(pattern, repl, string[, count]) >Return the string obtained by replacing the leftmost non-overlapping >occurrences of pattern in string by the replacement repl. > >Your pattern would be "[^A-Za-z0-9_]word[^A-Za-z0-9_]" > >[^xy] is approximately not in ('x', 'y') > >-- >Juho Schultz
Thanks. This works great except for one thing: The character after the replacement is deleted, so that if I have send_data (LAPTOP, test_string) it would replace it with: send_data (10.1.3.4 test_string) (ignoring that the 10.1.3.4 is not quoted). The comma is missing. Thanks in advance: Michael Yanowitz -- http://mail.python.org/mailman/listinfo/python-list