Bernie Connors wrote: > On Tuesday, September 26, 2017 at 12:32:18 PM UTC-3, Bernie Connors wrote: >> Hello, >> >> My first post here on C.L.P. I have only written a few python >> scripts in 2.7 and now I'm trying my first python 3 script. Can >> you tell me why this snippet won't run? >> ----------------------- >> from urllib.request import urlopen >> >> with >> urlopen('http://geonb.snb.ca/arcgis/rest/services/GeoNB_SNB_Parcels/MapServer/0/query?outSR=4617&f=JSON&where=PID='75385120'') >> as conn: >> print(conn) >> ----------------------- >> Thanks, >> Bernie. > > Thomas, > > The PID parameter at the end of my url must be enclosed in single > quotes, '75385120', or the API won't execute the query. I have the
Then use " to quote the Python string: >>> import urllib.request >>> url = "http://geonb.snb.ca/arcgis/rest/services/GeoNB_SNB_Parcels/MapServer/0/query?outSR=4617&f=JSON&where=PID='75385120'" >>> with urllib.request.urlopen(url) as conn: ... print(conn) ... data = conn.read() ... <http.client.HTTPResponse object at 0x7fe844448390> >>> data[:20] b'{"displayFieldName":' Looks good. To convert the data into a Python dict: >>> import json >>> d = json.loads(data.decode("utf-8")) >>> d {'features': [{'attributes': {'PID': '75385120'}, 'geometry': {'rings': [snip] PS: For other ways to write a Python string literal have a look into the tutorial: https://docs.python.org/3.6/tutorial/introduction.html#strings -- https://mail.python.org/mailman/listinfo/python-list