Begineer Question : Global string substitution with re

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • peter leonard

    Begineer Question : Global string substitution with re

    Hi,
    This is a basic question but I can't figure out what is wron - even after
    reading the documentation. I have a script that normalizes strings. One of
    the steps is to convert all fractions too the tag 'fraction'. For example :

    import re
    line = "This is the first ratio, 170/37, and this is the second 170/37 "


    def normalise(text) :

    #Tag fractions
    fraction = r'(\s+\d+\/\d+\s+)'
    regfr = re.compile(frac tion)
    text = regfr.sub(" |fraction| ",text)

    #Remove punctuation
    punc = r'\,'
    regpunc = re.compile(punc )
    text = regpunc.sub("", text)

    return text

    print line,"\n"
    print normalise(line) ,"\n"


    The output from this script is :

    This is the first ratio, 170/37, and this is the second 170/37

    This is the first ratio 170/37 and this is the second |fraction|


    I can't understand why only one of the fractions gets substituted. The
    documentation for sub states that the default argument for sub is 0 which
    means replace all occurences. The output of my script should be :

    This is the first ratio |fraction| and this is the second |fraction|


    Any help appreciated.

    Peter

    _______________ _______________ _______________ _______________ _____
    Add MSN 8 Internet Software to your existing Internet access and enjoy
    patented spam protection and more. Sign up now!



Working...