I've been following this SO solution to call python from golang and capture the return from go code to decode a simple csv and converting into json.
This works from the cli as the command:
$ python3.7 -c "exec(\"import csv,json \na=list() \nfor i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)) \nb=dict(enumerate(a)) \nc=json.dumps(b, sort_keys=True, indent=4) \nprint(c)\")"
From Golang the command set as follows:
cmd := exec.Command("python", "-c", "import csv,json; a=list(); for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)); b=dict(enumerate(a)); c=json.dumps(b, sort_keys=True, indent=4); print(c)")
However, I'm getting the following error:
exit status 1
File "<string>", line 1
import csv,json; a=list(); for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')): a.append(json.dumps(i)); b=dict(enumerate(a)); c=json.dumps(b, sort_keys=True, indent=4); print(c)
^
SyntaxError: invalid syntax
I think I need to move back the indent parallel to the for loop but how's that possible from the stringified command?
thanks in advance.
UPDATE:
Below is the working python equivalent, the line assigning c
variable needs to be along the for loop
a = list()
for i in csv.DictReader(open('/Users/Astra/data_in/Data.csv', 'r')):
a.append(json.dumps(i))
c = json.dumps(dict(enumerate(a)), sort_keys=True, indent=4)
print(c)