shaggs
shaggs

Reputation: 620

print if list index out of range

hi all im trying to create a handle for "list index out of range" but seem not to be having any luck.

import json, urllib, re
from urllib import urlencode
import googlemaps
import tempfile
import win32api
import win32print
start = "Adelaide, South Australia"
finish = " ghkjffzh, south Australia "



url = 'http://maps.googleapis.com/maps/api/directions/json?%s' % urlencode((
            ('origin', start),
            ('destination', finish)
 ))
ur = urllib.urlopen(url)
result = json.load(ur)
filename = "output.txt"
with open(filename, 'w') as output:
                for i in range(0, len(result['routes'][0]['legs'][0]['steps'])):
                    try:
                        s = (result['routes'][0]['legs'][0]['steps'][i]['html_instructions'])
                        d = (result['routes'][0]['legs'][0]['steps'][i]['distance']['text'])
                        l = (result['routes'][0]['legs'][0]['steps'][i]['duration']['text'])
                        s = re.sub('<[A-Za-z\/][^>]*>', '', s)
                        output.writelines(s + " " + d + " " + l + '\n')
                    except Exception:
                                print "Directions could not be printed"
                                output.write("Directions could not be given due to the format of page or the address type")

but nothing is written to .txt and still get error.

ive tried to replace Exception with IndexError and VauleError but no change

Upvotes: 1

Views: 105

Answers (1)

shaggs
shaggs

Reputation: 620

Solved used by exploring the returned json result and found a Status result so I passed that first.

with open(filename, 'w') as output: 
     if result ['status'] == "NOT_FOUND"
      output.write( " no directions avalible")
     else:
       for i in range(0, len(result['routes'][0]['legs'][0]['steps'])): 
          s = (result['routes'][0]['legs'][0]['steps'][i]['html_instructions']) 
          d = (result['routes'][0]['legs'][0]['steps'][i]['distance']['text']) 
          l = (result['routes'][0]['legs'][0]['steps'][i]['duration']['text'])
          s = re.sub('<[A-Za-z\/][^>]*>', '', s)
          output.writelines(s + " " + d + " " + l + '\n')

Upvotes: 1

Related Questions