Python JSON

This topic is to discuss the following lesson:

Hi rene.

In a json like this…

{
    "routers": 
      {
        "name": "CSR1000V",
        "vendor": "Cisco",
        "type": "virtual"
      },
      {
        "name": "1921",
        "vendor": "Cisco",
        "type": "hardware"
      }
   
}

How can I select the “routers” label?

In this json I have not the “[]” after “routers” labels.

For example I have to select…if is there routers do something…if there a firewalls do something other…

Thanks you

Hi Giovanni,

You probably already have an answer but just in case…

When you want to “select” a certain field in a JSON (or dictionary), it’s best to use an IDE like vscode and use the debugger to select what you need. For example:

Rene

Hi Rene and staff,
you don’t talk about CSV with python, so may i ask a question about python with CSV format in this section ?
Example 1: let’s python read a csv file
image

Exemple1 is a string, then apply csv.reader(): you get an object “_csv.reader” but this is not a loop object

Example 2: just open the csv file
image
f is a _io.TextIOWrapper object, then apply csv.reader(): you get an object “_csv.reader” as well, but THIS IS a loop object

I don’t understand why in example 1, a “_csv.reader” object is NOT a loop object, and in example 2, the same object (same class) is a loop object.
So the same object seems to be not consistent as it comes from a string or a _io.TextIOWrapper object.
Could you help me ?
Best regards

Bonjour @syncope988,

Using open or with open is the same thing, except when you use “with”, it automatically closes.

First Example

  • You use the read() function on “f” and assign the output to the “exemple1” variable. When you use the read() function, you get a string.
  • You then run the reader() function from the CSV module, feed it the “exemple1” variable and assign the output to the “exemple_f” variable.
  • You then iterate over each item in the “exemple_f” variable.

When you check what “row” is, you’ll see it’s a list with only a single character. That’s why you get an index out of range error. There is only one item in the list, that’s why [0] works but not [1] or [2].

Second Example

  • You open the csv_example.csv file and assign the output to variable “f”.
  • You run the reader() function from the CSV module and assign the output to variable “exemple_f”.
  • You iterate over variable “exemple_f”.

This time, you didn’t use the read() function.

By doing it like this, each line in your CSV file becomes a list. That’s why you can use [0], [1], [2], etc. to access the items in your list.

In a nutshell: data and data conversion can be a pain. You can’t always predict what kind of object you get in return…a string, tuple, list, or dictionary. For example, the read() function returns a string but the readlines() function returns a list.

To make your life a lot easier, try to run some Python scripts in visual studio code. When you add a breakpoint, you can visualize what your data looks like:

You can even right-click on what you want to use and choose “copy as expression”:

And use it in your code, or in the debug console:

This makes it much easier compared to using the python interpreter or IDLE where you have to use the print or type function to see things. Give it a try, it will be very helpful :slight_smile:

Doe this explanation help?

Rene

Hi Rene,
yes it helps a lot
Great thanks
Regards