Skip to content Skip to sidebar Skip to footer

Convert Text Into A Dictionary With Certain Keys And Values

Possible Duplicate: how to extract a text file into a dictionary I have a text file where I would like to change it into a dictionary in python. The text file is as follows. Whe

Solution 1:

answer = {} # initialize an empty dictwithopen('path/to/file') as infile: # open the file for reading. Opening returns a "file" object, which we will call "infile"# iterate over the lines of the file ("for each line in the file")for line in infile:

        # "line" is a python string. Look up the documentation for str.strip(). # It trims away the leading and trailing whitespaces
        line = line.strip()

        # if the line starts with "Object"if line.startswith('Object'):

            # we want the thing after the ":" # so that we can use it as a key in "answer" later on
            obj = line.partition(":")[-1].strip()

        # if the line does not start with "Object" # but the line starts with "Orbital Radius"elif line.startswith('Orbital Radius'):

            # get the thing after the ":". # This is the orbital radius of the planetary body. # We want to store that as an integer. So let's call int() on it
            rad = int(line.partition(":")[-1].strip())

            # now, add the orbital radius as the value of the planetary body in "answer"
            answer[obj] = rad

Hope this helps

Sometimes, if you have a number in decimal notation ("floating point numbers" in python-speak) in your file (3.14, etc), calling int on it will fail. In this case, use float() instead of int()

Solution 2:

Read the file in one string instead of readlines() and then split on "\n\n", this way you will have a list of items, each describing your object.

Then you might want to create a class which does something like this:

classSpaceObject:def__init__(self,string):
    #code here to parse the stringself.name = name
    self.radius = radius
    #and so on...

then you can create a list of such objects with

#items is the list containing the list of strings describing the various itemsl = map(lambda x: SpaceObject(x),items).

And then simply do the following

d= {}
for i in l:
  d[i.name] = i

Post a Comment for "Convert Text Into A Dictionary With Certain Keys And Values"