我一直在遵循这种SO解决方案,从golang调用python并捕获go代码的返回结果以解码简单的csv并转换为json。

这可以从cli作为命​​令运行:

$ 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)\")"

在Golang中,命令集如下:

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)")

但是,出现以下错误:

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

我想我需要将缩进移到与for循环平行的位置,但是从字符串化命令中怎么可能呢?

提前致谢。

更新:

cfor 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)