'Nested dictionary from a txt with the dictionary

I have a txt file with the dictionary like this:

{'origin': {'Ukraine': 50, 'Portugal': 20, 'others': 10}, 'native language': {'ucranian': 50; 'english': 45, 'russian': 30, 'others': 10}, 'second language': {'ucranian': 50; 'english': 45, 'russian': 30, 'others': 10, 'none': 0}, 'profession': {'medical doctor': 50, 'healthcare professional': 40, 'cooker': 30, 'others': 10, 'spy': 0}, 'first aid skills': {'yes': 50, 'no': 0}, 'driving skills': {'yes': 40, 'no': 0}, 'cooking skills': {'yes': 50, 'some': 30, 'no': 0}, 'IT skills': {'yes': 50, 'little': 35, 'no': 0}}

And I want to create a dictionary from this

I tried using ast.literal_eval but it gives me the following error:

SyntaxError: expression expected after dictionary key and ':'

This is my code :

def helpersSkills(helpersFile, skillsFile):
    """
    """
    helpers = open(helpersFile, 'r')
    skills = open(skillsFile, 'r')
    skillsLines = skills.read()
    dictionary = ast.literal_eval(skillsLines)

 
 ...

helpersSkills('helpersArrived2.txt', 'skills.txt')


Solution 1:[1]

as said by @ThierryLathuille it was just some writing errors in the txt file so its working:

{'origin': {'Ukraine': 50, 'Portugal': 20, 'others': 10}, 'native language': {'ucranian': 50, 'english': 45, 'russian': 30, 'others': 10}, 'second language': {'ucranian': 50, 'english': 45, 'russian': 30, 'others': 10, 'none': 0}, 'profession': {'medical doctor': 50, 'healthcare professional': 40, 'cooker': 30, 'others': 10, 'spy': 0}, 'first aid skills': {'yes': 50, 'no': 0}, 'driving skills': {'yes': 40, 'no': 0}, 'cooking skills': {'yes': 50, 'some': 30, 'no': 0}, 'IT skills': {'yes': 50, 'little': 35, 'no': 0}}

This is the code :

def helpersSkills(helpersFile, skillsFile):
    """
    """
    helpers = open(helpersFile, 'r')
    skills = open(skillsFile, 'r')
    skillsLines = skills.read()
    dictionary = ast.literal_eval(skillsLines)

 
 ...

helpersSkills('helpersArrived2.txt', 'skills.txt')

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 rodas