Begineer Question : Global string substitution with re

peter leonard pfleonard at hotmail.com
Mon Sep 22 11:22:44 CEST 2003


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(fraction)
    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!   
http://join.msn.com/?page=dept/byoa






More information about the Python-list mailing list