Ejercicio

Escribir un programa que abra el fichero con información sobre el PIB per cápita de los países de la Unión Europea (url:https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?file=data/sdg_08_10.tsv.gz&unzip=true), pregunte por las iniciales de un país y muestre el PIB per cápita de ese país de todos los años disponibles.

Solución


In [1]:
def get_pib(url, country='ES'):
    '''
    Función que muestra por pantalla el pib per cápita un país dado de los años disponibles en un fichero dado.
    Parámetros:
        url: Es una cadena con la url del fichero de texto que contiene el pib per cápita.
        country: Es una cadena con el código del país. 
    Devuelve:
        Un diccionario con pares año:pib del país country que hay en el fichero con la url dada.
    '''
    from urllib import request
    from urllib.error import URLError
    try:
        f = request.urlopen(url)
    except URLError:
        return('¡La url ' + url + ' no existe!')
    else:
        data = f.read().decode('utf-8').split('\n') # Leer los datos y guardar cada línea en una lista
        data = [i.split('\t') for i in data] # Dividir cada línea por el tabulador
        data = [list(map(str.strip, i)) for i in data] # Eliminar espacios en blanco
        for i in data:
            i[0] = i[0].split(',')[-1] # Obtener el código del país del primer elemento de la lista
        data[0][0] = 'years'
        data = {i[0]:i[1:] for i in data}
        result = {data['years'][i]:data[country][i] for i in range(len(data['years']))}
        return result

country = input('Introduce el código de un país: ')
print('Producto Interior Bruto per cápita de', country)
print('Año', '\t', 'PIB')
for year, pib in get_pib('https://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?file=data/sdg_08_10.tsv.gz&unzip=true').items():
    print(year, '\t', pib)


Producto Interior Bruto per cápita de ES
Año 	 PIB
2000 	 21400
2001 	 22100
2002 	 22400
2003 	 22700
2004 	 23100
2005 	 23500
2006 	 24100
2007 	 24500
2008 	 24400
2009 	 23300
2010 	 23200
2011 	 22900
2012 	 22200
2013 	 21900
2014 	 22300
2015 	 23100
2016 	 23800 p
2017 	 24500 p
2018 	 25000 p