String Replace only if whole word?

Discussion in 'Python' started by Michael Yanowitz, Nov 17, 2006.

  1. 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
    Michael Yanowitz, Nov 17, 2006
    #1
    1. Advertising

  2. Michael Yanowitz

    Juho Schultz Guest

    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
    Juho Schultz, Nov 17, 2006
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. \A_Michigan_User\
    Replies:
    2
    Views:
    885
    \A_Michigan_User\
    Aug 21, 2006
  2. Carsten Haese

    RE: String Replace only if whole word?

    Carsten Haese, Nov 17, 2006, in forum: Python
    Replies:
    0
    Views:
    575
    Carsten Haese
    Nov 17, 2006
  3. Tim Chase
    Replies:
    0
    Views:
    420
    Tim Chase
    Nov 17, 2006
  4. Michael Yanowitz

    RE: String Replace only if whole word?

    Michael Yanowitz, Nov 17, 2006, in forum: Python
    Replies:
    1
    Views:
    775
    Leonhard Vogt
    Nov 19, 2006
  5. perl Newbie

    Match Whole word only

    perl Newbie, Apr 10, 2009, in forum: Perl Misc
    Replies:
    7
    Views:
    199
Loading...

Share This Page