有没有办法在不导入 csv 的情况下从 .csv 创建 JSON?
Is there a way to create JSON from .csv without importing csv?
我有一些来自 Google 表格的简单 csv 数据,我想使用 Python 将其格式化为 JSON 这样我就可以 post在 API.
有没有办法不用导入就可以做到这一点 csv
?
Zapier 不支持导入 requests
以外的任何内容。
示例 csv 数据:
Name,ID,Price,Qty
Row 1,123,100,1
Row 2,123,56,2
Row 3,123,90,3
Row 4,213,68,5
Row 5,765,987,789
Row 6,123,123,123
更新:这是我所在的位置:
Zapier screenshot
但我收到错误消息:
File "<string>", line 11, in the_function
NameError: name 'data' is not defined
错误是因为 data.csv 不是一个有效的变量名,你不能有 '.'在那里。
我不知道 Zapier 是如何工作的,但是如果您尝试从一个名为 'data.csv' 的文件中读取数据,并且您想要以下格式的输出
[{"name": "Row", "ID": 1, "Price": 100, "Qty":1}, ...
那就试试
# Reading each line the data.csv file into a list
with open("data.csv", "r") as f:
input = f.readlines()
input = [i.strip('\n\r') for i in input] # Strip new line characters
s = "["
for k in input[1:]: # For every line except for the header
s += '{{"Name": "{}", "ID": {}, "Price": {}, "Qty": {}}}, '.format(*k.split(","))
s += "]"
如果您正在尝试从变量 "input_data" 解析测试(看起来您正在尝试这样做),请尝试。
input = input_data['data'].split("\n")
s = "["
for k in input[1:]: # For every line except for the header
s += '{{"Name": "{}", "ID": {}, "Price": {}, "Qty": {}}}, '.format(*k.split(","))
s += "]"
Only the standard Python library and requests is available.
因此 import csv
和 import json
将被允许,因为它们是标准的 Python 库。
这取决于您希望 JSON 输出格式是什么格式。一个非常简单直接的转换是使用标准 Python csv
和 json
库,如下所示:
import csv
import json
with open('data.csv') as f_input:
data = list(csv.DictReader(f_input))
with open('data.json', 'w') as f_output:
json.dump(data, f_output, indent=3)
给你一个输出JSON文件如下:
[
{
"Name": "Row 1",
"ID": "123",
"Price": "100",
"Qty": "1"
},
{
"Name": "Row 2",
"ID": "123",
"Price": "56",
"Qty": "2"
},
{
"Name": "Row 3",
"ID": "123",
"Price": "90",
"Qty": "3"
},
{
"Name": "Row 4",
"ID": "213",
"Price": "68",
"Qty": "5"
},
{
"Name": "Row 5",
"ID": "765",
"Price": "987",
"Qty": "789"
},
{
"Name": "Row 6",
"ID": "123",
"Price": "123",
"Qty": "123"
}
]
来自 Zapier Platform 团队的 David。
正如其他人提到的,data.csv = ...
无效 python,因此您的错误。
为了提供一些背景信息,您的 python 代码设置如下:
# this is done automatically, behind the scene
s = """Name,ID,Price,Qty
Row 1,123,100,1
Row 2,123,56,2
Row 3,123,90,3
Row 4,213,68,5
Row 5,765,987,789
Row 6,123,123,123"""
input_data = {"data": s}
所以要解析它,您的代码应该类似于:
import csv
result = {}
with csv.reader(input_data['data'].splitlines()) as r:
for line in r:
# organize the data how you want
pass
return result
这应该可以让您将数据转换成您想要的任何形状!
您提到要将数据发送到 API - 您也可以在此代码步骤中执行此操作。参见 HTTP examples。
我有一些来自 Google 表格的简单 csv 数据,我想使用 Python 将其格式化为 JSON 这样我就可以 post在 API.
有没有办法不用导入就可以做到这一点 csv
?
Zapier 不支持导入 requests
以外的任何内容。
示例 csv 数据:
Name,ID,Price,Qty
Row 1,123,100,1
Row 2,123,56,2
Row 3,123,90,3
Row 4,213,68,5
Row 5,765,987,789
Row 6,123,123,123
更新:这是我所在的位置:
Zapier screenshot
但我收到错误消息:
File "<string>", line 11, in the_function
NameError: name 'data' is not defined
错误是因为 data.csv 不是一个有效的变量名,你不能有 '.'在那里。
我不知道 Zapier 是如何工作的,但是如果您尝试从一个名为 'data.csv' 的文件中读取数据,并且您想要以下格式的输出
[{"name": "Row", "ID": 1, "Price": 100, "Qty":1}, ...
那就试试
# Reading each line the data.csv file into a list
with open("data.csv", "r") as f:
input = f.readlines()
input = [i.strip('\n\r') for i in input] # Strip new line characters
s = "["
for k in input[1:]: # For every line except for the header
s += '{{"Name": "{}", "ID": {}, "Price": {}, "Qty": {}}}, '.format(*k.split(","))
s += "]"
如果您正在尝试从变量 "input_data" 解析测试(看起来您正在尝试这样做),请尝试。
input = input_data['data'].split("\n")
s = "["
for k in input[1:]: # For every line except for the header
s += '{{"Name": "{}", "ID": {}, "Price": {}, "Qty": {}}}, '.format(*k.split(","))
s += "]"
Only the standard Python library and requests is available.
因此 import csv
和 import json
将被允许,因为它们是标准的 Python 库。
这取决于您希望 JSON 输出格式是什么格式。一个非常简单直接的转换是使用标准 Python csv
和 json
库,如下所示:
import csv
import json
with open('data.csv') as f_input:
data = list(csv.DictReader(f_input))
with open('data.json', 'w') as f_output:
json.dump(data, f_output, indent=3)
给你一个输出JSON文件如下:
[
{
"Name": "Row 1",
"ID": "123",
"Price": "100",
"Qty": "1"
},
{
"Name": "Row 2",
"ID": "123",
"Price": "56",
"Qty": "2"
},
{
"Name": "Row 3",
"ID": "123",
"Price": "90",
"Qty": "3"
},
{
"Name": "Row 4",
"ID": "213",
"Price": "68",
"Qty": "5"
},
{
"Name": "Row 5",
"ID": "765",
"Price": "987",
"Qty": "789"
},
{
"Name": "Row 6",
"ID": "123",
"Price": "123",
"Qty": "123"
}
]
来自 Zapier Platform 团队的 David。
正如其他人提到的,data.csv = ...
无效 python,因此您的错误。
为了提供一些背景信息,您的 python 代码设置如下:
# this is done automatically, behind the scene
s = """Name,ID,Price,Qty
Row 1,123,100,1
Row 2,123,56,2
Row 3,123,90,3
Row 4,213,68,5
Row 5,765,987,789
Row 6,123,123,123"""
input_data = {"data": s}
所以要解析它,您的代码应该类似于:
import csv
result = {}
with csv.reader(input_data['data'].splitlines()) as r:
for line in r:
# organize the data how you want
pass
return result
这应该可以让您将数据转换成您想要的任何形状!
您提到要将数据发送到 API - 您也可以在此代码步骤中执行此操作。参见 HTTP examples。