Need a specific sort of string modification. Can someone help?

Tim Chase python.list at
Sat Jan 5 18:24:13 CET 2013

On 01/05/13 02:35, Sia wrote:
> I have strings such as:
> tA.-2AG.-2AG,-2ag
> or
> .+3ACG.+5CAACG.+3ACG.+3ACG
> The plus and minus signs are always followed by a number (say, i). I want python to find each single plus or minus, remove the sign, the number after it and remove i characters after that. So the two strings above become:
> tA..,
> and
> ...

With the same caveat as Frank posted about the second one being 
"...." (4 dots), I don't know how this version times out:

   import re
   r = re.compile(r"[-+](\d+)([^-+]*)")
   def modify(m):
       result =[int(]
       return result
   for test, expected in (
           ("tA.-2AG.-2AG,-2ag", "tA..,"),
           (".+3ACG.+5CAACG.+3ACG.+3ACG", "...."),
       s = r.sub(modify, test)
       print "%r -> %r (%r)" % (
           test, s, expected
       assert s == expected, "Nope"

(it passes the tests as modified to "....")


More information about the Python-list mailing list