Python Forum
Need help in python scripting
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Need help in python scripting
#11
using below script i am getting error at multilevel. When i use get for x["salary"][0]["SID"] i get error in script
import json
import csv
 
 
with open('/local/dummy.json') as f:
    json_data = json.load(f, strict=False)
 
with open('/local/application.csv', 'w') as outfile:
    csv_write = csv.writer(outfile)
    csv_write.writerow(["id", "SID", "Type", "ttt"])
    for x in json_data["dummy"]:
        
    csv_write.writerow([x["id"],
                x["name"],
               x.get("name",'None'),
                x["salary"][0]["SID"]])
Reply
#12
i have object inside array and when i am trying to fecth details i am getting index error
row_array.append(json_d["axe"][0]["name"])
error; -
IndexError: list index out of range
Reply
#13
Both JSON files/strings that you post in post#1 and in post #10 are not valid json as you can check https://jsonlint.com/
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#14
Json file: -
{
"id": 1,
"name": "Auto",
"architecture": {
"axe": [
"j",
"y",
"r",
"t",
"x"
],
"p": [
"Vir",
"M"
]
},
"LL": [
{
"id": 10,
"name": "A",
"xx": "D",
"bb": "aa",
"yy": "S"
]
}
}

python script used:-
import sys
import json
import csv
reload(sys)
sys.setdefaultencoding('utf8')
with open('a.json','r') as f:
        json_data=json.load(f,strict=False)
with open('a.csv','w') as outfile:
        csv_write=csv.writer(outfile,quoting=csv.QUOTE_ALL)
        csv_write.writerow(["id","xx"])
        for json_d in json_data["a"]:
                row_array = []
                try:
                        row_array.append(json_d["Id"])
                except KeyError:
                        row_array.append('')
                try:
                        row_array.append(json_d["LL"][0]["xx"])
                except (KeyError,TypeError):
                        row_array.append('')
                except TypeError:
                        row_array.append('')
                csv_write.writerow(row_array)
outfile.close()
i am getting error -IndexError: list index out of range on command -row_array.append(json_d["LL"][0]["xx"])
Reply
#15
This is NOT valid JSON!!!!

(Nov-27-2019, 09:12 AM)rajrishi990 Wrote: Json file: -
{
"id": 1,
"name": "Auto",
"architecture": {
"axe": [
"j",
"y",
"r",
"t",
"x"
],
"p": [
"Vir",
"M"
]
},
"LL": [
{
"id": 10,
"name": "A",
"xx": "D",
"bb": "aa",
"yy": "S"
]
}
}
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#16
valid json: -
Output:
{ "a": [{ "id": 1, "name": "Auto", "architecture": { "axe": [ "j", "y", "r", "t", "x" ], "p": [ "Vir", "M" ] }, "LL": [{ "id": 10, "name": "A", "xx": "D", "bb": "aa", "yy": "S" }] }] }
Reply
#17
This:
import json
import csv
from pathlib import Path


DESKTOP = Path.home() / "Desktop"

with open(DESKTOP / "my_data.json") as fd:
    json_data = json.load(fd)

# print(list(json_data['a'][0]))

with open(DESKTOP / "a.csv", "w") as outfile:
    writer = csv.writer(outfile, quoting=csv.QUOTE_ALL)
    header = ["id", "xx"]
    print("Writing header:", header)
    writer.writerow(header)
    for json_d in json_data["a"]:
        row_array = []
        row_array.append(json_d.get("id") or "NO ID")
        try:
            row_array.append(json_d["LL"][0]["xx"])
        except (KeyError, TypeError):
            row_array.append("NO XX")
        print("Writing row", row_array)
        writer.writerow(row_array)


#with open(DESKTOP / "a.csv", "rb") as outfile:
#    print(outfile.read())
Should parse this:
{
	"a": [{
		"id": 1,
		"name": "Auto",
		"architecture": {
			"axe": [
				"j",
				"y",
				"r",
				"t",
				"x"
			],
			"p": [
				"Vir",
				"M"
			]
		},
		"LL": [{
			"id": 10,
			"name": "A",
			"xx": "D",
			"bb": "aa",
			"yy": "S"
		}]
	}]
}
I get some unexpected \r, but don't have time to investigate.
Choose next time real data and this garbage, where no one knows what is what.
I tested this on windows. I put the files in a different path.

Output:
Writing header: ['id', 'xx'] Writing row [1, 'D']
File content:
Output:
"id","xx" "1","D"
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#18
(Nov-27-2019, 11:56 AM)DeaD_EyE Wrote: I get some unexpected \r, but don't have time to investigate.
(Nov-27-2019, 11:56 AM)DeaD_EyE Wrote: I tested this on windows.

When using csv module pass newline='' as argument to open. It's stated in the docs:
Quote:If csvfile is a file object, it should be opened with newline=''. 1
This will resolve the extra blank lines when on Windows. On Linux it will work as expected without that argument, but no harm when it's there.

Here is the relevant docs
https://docs.python.org/3/library/csv.html#id3
https://docs.python.org/3/library/functi...-parameter
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Blender scripting the_jl_zone 0 431 Jul-10-2023, 08:48 PM
Last Post: the_jl_zone
  Python Scripting Environment jpotter0 1 1,618 Nov-19-2022, 03:07 PM
Last Post: snippsat
  Scripting: Multiple Votes With a Single Click or Button Ovidiu 0 1,364 Jul-07-2020, 10:51 AM
Last Post: Ovidiu
  Abaqus Python Scripting..Key error maddy 0 4,742 May-19-2018, 08:05 AM
Last Post: maddy
  Network scripting bsoth 1 2,641 Feb-06-2018, 01:41 AM
Last Post: wavic

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020