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