Home > Net >  keyerror when adding key in dict
keyerror when adding key in dict

Time:04-03

I cleaned some keys of a dictionary and tried to add them into a new dict, so i can only work with them. But when i try to encode and decode keys such as Radaufhängung or Zündanlage and add them into the new dict i get an error. My question is if there is a way to go around thir or if there is a better solution to handle this (line: 49)?

my code:

import requests
import json
import time
from requests.exceptions import HTTPError

attempts = 0

def get_data_from_url(url):

    try:
        response = requests.get(url)
    
        # If the response was successful, no Exception will be raised
        response.raise_for_status()
        
    except HTTPError:
        return "HTTPError"
        
    else:
        response_dict = json.loads(response.text)
        return response_dict
    


url = get_data_from_url("http://160.85.252.148/")

#(1) upon no/invalid response, the query is resubmitted with exponential backoff waiting time in between requests to avoid server overload;
while url == "HTTPError":
    attempts  = 1
    time.sleep(attempts * 1.5)
    url = get_data_from_url("http://160.85.252.148/")

print(url)

#(2) material records with missing or invalid cost are ignored;
valid_values = {}

for key in url:
    if type(url[key]) == int or type(url[key]) == float and url[key].isdigit() == True:
        
        #(3) wrongly encoded umlauts are repaired.
        key = key.encode('latin1').decode('utf8')
        
        #key = key.replace('é', 'Oe').replace('ä', 'ae').replace('ü', 'ue')
                
        
        
        
        valid_values[key]=abs(url[key])
        
print(valid_values)

CodePudding user response:

You're trying to access the dictionary with a modified key. Store the original key and use it when accessing the dictionary:

        okey = key
        key = key.encode('latin1').decode('utf8')
        ...
        valid_values[key]=abs(url[okey])
  • Related