# 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