python 2 urlopen vs python 3 urlopen

Terry Reedy tjreedy at udel.edu
Mon Aug 27 17:07:29 EDT 2018


On 8/27/2018 1:25 PM, Sean Darcy wrote:
> python 2 :
> 
> python
> Python 2.7.15 (default, May 15 2018, 15:37:31)
> .....
>>>> import urllib2
>>>> res = urllib2.urlopen('https://api.ipify.org').read()
>>>> print res
> www.xxx.yyy.zzz

In Python 2, this is the printed representation of a bytestring.

> python3
> 
> python3
> Python 3.6.6 (default, Jul 19 2018, 16:29:00)
> ...
>>>> from urllib.request import urlopen
>>>> res = urlopen('https://api.ipify.org').read()
>>>> print(res)
> b'ww.xxx.yyy.zzz'

In Python 3, this is the printed representation of the *same* bytestring.

> I'm expecting the python 2 result, just the ip address.

That is exactly what you got.

> How can I get
> python 3 just to give the address, and not include  b'      '  ?

These are not part of the bytestring, just how it is printed.

You need to read something about the switch from byte strings to unicode 
strings as the 'string' class.  But I don't know specifically what to 
recommend.

-- 
Terry Jan Reedy




More information about the Python-list mailing list