Bengt Richter wrote:
On Sat, 26 Mar 2005 02:07:15 GMT, aaron <[EMAIL PROTECTED]> wrote:
pattern.sub(':', '375 mi. south of U.C.B is 3.4 degrees warmer.')
'375 mi: south of U:C:B is 3.4 degrees warmer:'

so this works, but not in the following case:
pattern.sub(':', '.3')

Brute force the exceptional case that happens at the start of the line?

 >>> import re
 >>> pattern = re.compile(r'^[.]|(?!\d)[.](?!\d)')
 >>> pattern.sub(':', '375 mi. south of U.C.B is 3.4 degrees warmer.')
 '375 mi: south of U:C:B is 3.4 degrees warmer:'
 >>> pattern.sub(':', '.3')
 ':3'
 >>> pattern.sub(':', '3.')
 '3:'

Be careful... the OP has assumed something that isn't true, and Bengt's fix isn't sufficient:

>>> import re
>>> s = 'x.3'
>>> pattern = re.compile(r'^[.]|(?!\d)[.](?!\d)')
>>> pattern.sub(':', '.3')
':3'
>>> pattern.sub(':', s)
'x.3'

So the OP's "this works" comment was wrong.

Suggestion: whip up a variety of automated test cases and
make sure you run them all whenever you make changes to
this code...

(No, I don't have a solution to the continuing problem,
other than to wonder whether the input data really requires
all these edge cases to be handled properly.)

-Peter
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to