How do you print a string after it's been searched for an RE?

Thomas L. Shinnick tshinnic at prismnet.com
Thu Jun 23 17:47:02 EDT 2011


There is also
       print(match_obj.string)
which gives you a copy of the string searched.  See end of section 
6.2.5. Match Objects

At 02:58 PM 6/23/2011, John Salerno wrote:
>After I've run the re.search function on a string and no match was
>found, how can I access that string? When I try to print it directly,
>it's an empty string, I assume because it has been "consumed." How do
>I prevent this?
>
>It seems to work fine for this 2.x code:
>
>import urllib.request
>import re
>
>next_nothing = '12345'
>pc_url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?
>nothing='
>pattern = re.compile(r'[0-9]+')
>
>while True:
>     page = urllib.request.urlopen(pc_url + next_nothing)
>     match_obj = pattern.search(page.read().decode())
>     if match_obj:
>         next_nothing = match_obj.group()
>         print(next_nothing)
>     else:
>         print(page.read().decode())
>         break
>
>But when I try it with my own code (3.2), it won't print the text of
>the page:
>
>import urllib.request
>import re
>
>next_nothing = '12345'
>pc_url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?
>nothing='
>pattern = re.compile(r'[0-9]+')
>
>while True:
>     page = urllib.request.urlopen(pc_url + next_nothing)
>     match_obj = pattern.search(page.read().decode())
>     if match_obj:
>         next_nothing = match_obj.group()
>         print(next_nothing)
>     else:
>         print(page.read().decode())
>         break
>
>P.S. I plan to clean up my code, I know it's not great right now. But
>my immediate goal is to just figure out why the 2.x code can print
>"text", but my own code can't print "page," which are basically the
>same thing, unless something significant has changed with either the
>urllib.request module, or the way it's decoded, or something, or is it
>just an RE issue?
>
>Thanks.




More information about the Python-list mailing list