Re: regular expressions.

2008-08-08 Thread Alexei Zankevich
Use the print statement:

import re
vowel = r'[aeiou]'
print re.findall(vowel, rvowel)

Alexey

On Fri, Aug 8, 2008 at 2:17 PM, Atul. [EMAIL PROTECTED] wrote:


  Yes. You didn't paste the traceback into your message.
 
   import re
   vowel = r'[aeiou]'
   re.findall(vowel, rvowel)
 
  ['o', 'e']
 
  It works as expected here.
 
  Peter

 When I key this input in IDLE it works but when I try to run the
 module it wont work.
 --
 http://mail.python.org/mailman/listinfo/python-list

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

Re: regex question

2008-08-05 Thread Alexei Zankevich
No, there is a bad way - because of the example doesn't solve arbitrary
amount of number.number.. blocks.
But the python regexp engine supports for lookahead (?=pattern) and
lookbehind (?=pattern).
In those cases patterns are not included into the replaced sequence of
characters:
 re.sub('(?=\d)\.(?=\d)', '', '1234.324 abc.100.abc abc.abc')
'1234324 abc.100.abc abc.abc'

Alexey

On Tue, Aug 5, 2008 at 2:10 PM, Marc 'BlackJack' Rintsch [EMAIL 
PROTECTED]wrote:

 On Tue, 05 Aug 2008 11:39:36 +0100, Fred Mangusta wrote:

  In other words I'd like to replace all the instances of a '.' character
  with something (say nothing at all) when the '.' is representing a
  decimal separator. E.g.
 
  500.675     500675
 
  but also
 
  1.000.456.344  1000456344
 
  I don't care about the fact the the resulting number is difficult to
  read: as long as it remains a series of digits it's ok: the important
  thing is to get rid of the period, because I want to keep it only where
  it marks the end of a sentence.
 
  I was trying to do like this
 
  s=re.sub([(\d+)(\.)(\d+)],... ,s)
 
  but I don't know much about regular expressions, and don't know how to
  get the two groups of numbers and join them in the sub. Moreover doing
  like this I only match things like 345.000 and not 1.000.000.
 
  What's the correct approach?

 In [13]: re.sub(r'(\d)\.(\d)', r'\1\2', '1.000.456.344')
 Out[13]: '1000456344'


 Ciao,
 Marc 'BlackJack' Rintsch
 --
 http://mail.python.org/mailman/listinfo/python-list

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

Re: regex question

2008-08-05 Thread Alexei Zankevich
=)
Indeed. But it will replace all dots including ordinary strings instead of
numbers only.

On Tue, Aug 5, 2008 at 3:23 PM, Jeff [EMAIL PROTECTED] wrote:

 On Aug 5, 7:10 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote:
  On Tue, 05 Aug 2008 11:39:36 +0100, Fred Mangusta wrote:
   In other words I'd like to replace all the instances of a '.' character
   with something (say nothing at all) when the '.' is representing a
   decimal separator. E.g.
 
   500.675     500675
 
   but also
 
   1.000.456.344  1000456344
 
   I don't care about the fact the the resulting number is difficult to
   read: as long as it remains a series of digits it's ok: the important
   thing is to get rid of the period, because I want to keep it only where
   it marks the end of a sentence.
 
   I was trying to do like this
 
   s=re.sub([(\d+)(\.)(\d+)],... ,s)
 
   but I don't know much about regular expressions, and don't know how to
   get the two groups of numbers and join them in the sub. Moreover doing
   like this I only match things like 345.000 and not 1.000.000.
 
   What's the correct approach?
 
  In [13]: re.sub(r'(\d)\.(\d)', r'\1\2', '1.000.456.344')
  Out[13]: '1000456344'
 
  Ciao,
  Marc 'BlackJack' Rintsch

 Even faster:

 '1.000.456.344'.replace('.', '') = '1000456344'
 --
 http://mail.python.org/mailman/listinfo/python-list

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

Fwd: Unit testing type comparison

2008-08-04 Thread Alexei Zankevich
Hello Mike,

The reason of the problem is that the class Test was not pushed into the
sys.modules.
Use one more separate module for that stuff:
*one.py*
class Test(object):
'''just define'''

*three.py*
from one import Test
#push one.pyc to sys.modules

if __name__ == '__main__':
import two
two.run( Test() )

*two.py*
def run( a ):
from one import Test
#reuse existing Test
print type(a), Test, type(a) == Test

Regards,
Alexey

On Sat, Aug 2, 2008 at 5:16 PM, Mike Wyatt [EMAIL PROTECTED] wrote:

 I have a problem where type comparisons don't work in a second module when
 unit tests in the first module are run.  In the example below, class Test is
 declared in one.py.  When one.py is executed, it calls a method in two.py
 that imports Test from one.py.  The problem is that the Test object passed
 into the run method is in the __main__ namespace, while the Test class
 imported from one.py is in the one namespace.  Comparing type(a) and Test
 returns False, even though they are both Test objects.  How can I tweak
 these modules so that the type comparison returns True?

 I suppose one solution is to redesign my solution to not compare types, but
 I would still appreciate a solution for my personal knowledge.

  one.py 
 class Test(object):
 pass

 if __name__ == '__main__':
 import two
 two.run( Test() )

  two.py ***
 *def run( a ):
 from one import Test
 print type(a), Test, type(a) == Test
 *
 *** Output ***
 *class '__main__.Test' class 'one.Test' False


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

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