Bernard Lebel wrote:
> Hello,
> 
> Once again struggling with regular expressions.
> 
> I have a string that look like "something_shp1".
> I want to replace "_shp1" by "_shp". I'm never sure if it's going to
> be 1, if there's going to be a number after "_shp".
> 
> So I'm trying to use regular expression to perform this replacement.
> But I just can't seem to get a match! I always get a None match.
> 
> I would think that this would have done the job:
> 
> r = re.compile( r"(_shp\d)$" )
> 
> The only way I have found to get a match, is using
> 
> r = re.compile( r"(\S+_shp\d)$" )

My guess is you are calling r.match() rather than r.search(). r.match() 
only looks for matches at the start of the string; r.search() will find 
a match anywhere.

> My second question is related more to the actual string replacement.
> Using regular expressions, what would be the way to go? I have tried
> the following:
> 
> newstring = r.sub( '_shp', oldstring )
> 
> But the new string is always "_shp" instead of "something_shp".

Because your re matches something_shp.

I think
newstring = re.sub('_shp\d' '_shp', oldstring )
will do what you want.

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to