On Thu, Sep 24, 2009 at 10:43 AM, Support Desk <m...@ipglobal.net> wrote:
> I am trying to loop over a dictionary  of phone numbers and using a python
> regex to determine if they are long distance or local and then adding them
> to their appropriate dictionary, My regex doesn't appear to be working
> though.

"doesn't appear to be working" is a useless way to characterize the
problem you're having.

Always tell us what you expected and what you got instead.  Preferably
with the actual traceback if any.

Also, post a /runnable/ code fragment. That way we can try it out for ourselves.


FWIW this problem is too simple (IMHO) for regular expressions.
Simply carve off the first three digits and check against sets of the
prefixes you're interested in:


#any number starting with these prefixes is not long distance
local_prefixes = set(['832', '877', '888', '713', '866', '011', '001',
'281', '800'])

long_distance= {}
for key1, value1 in x.iteritems():
    if key1 == 'dest':
        if value1[:3] not in local_prefixes:
            long_distance[key1] = value1

HTH,
~Simon



>
> My regex's are these
>
>
>
> international__iregex=r'^1?(011|001)'  #Anything starting with these
> prefixes is International
>
> local__iregex=r'^1?(281|832|713|800)' #anything starting with these are
> local
>
> #long distance
>
> ld_regex=r'^1?(281|832|713|800|866|877|011|001|888)'  #any number not
> starting with these prefixes is long distance
>
>
>
> long_distance= {}
>
> My loop:
>
>                 for key1,value1 in x.items():
>
>                         if key1 == 'dest':
>
>                                 if not re.search(ld_regex,value1):
>
>                                         long_distance[key1] = value1
>
>                                 print long_distance

Out of curiosity, why are you printing the whole dict for every "key1
== 'dest'" even when you're not modifying the output dict?

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

Reply via email to