我有一个JSON文件,我想要转换为CSV文件.我怎么能用Python做到这一点?
我试过了:
import json
import csv
f = open('data.json')
data = json.load(f)
f.close()
f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
csv_file.writerow(item)
f.close()
Run Code Online (Sandbox Code Playgroud)
但是,它没有用.我正在使用Django,我收到的错误是:
import json
import csv
f = open('data.json')
data = json.load(f)
f.close()
f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
f.writerow(item) # ? changed
f.close()
Run Code Online (Sandbox Code Playgroud)
那么,我尝试了以下内容:
[{
"pk": 22,
"model": "auth.permission",
"fields": {
"codename": "add_logentry",
"name": "Can add log entry",
"content_type": 8
}
}, {
"pk": 23,
"model": "auth.permission",
"fields": {
"codename": "change_logentry", …
Run Code Online (Sandbox Code Playgroud) 这是我的 json 文件:
{
"ClientCountry": "ca",
"ClientASN": 812,
"CacheResponseStatus": 404,
"CacheResponseBytes": 130756,
"CacheCacheStatus": "hit"
}
{
"ClientCountry": "ua",
"ClientASN": 206996,
"CacheResponseStatus": 301,
"CacheResponseBytes": 142,
"CacheCacheStatus": "unknown"
}
{
"ClientCountry": "ua",
"ClientASN": 206996,
"CacheResponseStatus": 0,
"CacheResponseBytes": 0,
"CacheCacheStatus": "unknown"
}
Run Code Online (Sandbox Code Playgroud)
我想将这些 json 转换为 csv,如下所示。
"ClientCountry", "ClientASN","CacheResponseStatus", "CacheResponseBytes", "CacheCacheStatus"
"ca", 812, 404, 130756, "hit";
"ua", 206996, 301, 142,"unknown";
"ua", 206996, 0,0,"unknown";
Run Code Online (Sandbox Code Playgroud)
请让我知道如何使用 jq 实现此目的?
我只是在下面尝试过。但它不起作用。
jq 'to_entries[] | [.key, .value] | @csv'
Run Code Online (Sandbox Code Playgroud)
问候帕拉尼
Influxdb 是一个时间序列数据库,它将数据及其属性存储在表中,通常称为测量。
influxdb 数据库中的表可以以 csv 格式提取到本地系统吗?
如何使用jq将任意JSON 对象数组转换为 CSV,而该数组中的对象是嵌套的?
\nStackOverflow 有大量的问题/答案,其中引用了特定的输入或输出字段,但我希望有一个通用的解决方案
\n许多使用 JSON 的产品(如CouchDB、MongoDB、 \xe2\x80\xa6 )和库(如Lodash、 \xe2\x80\xa6 )使用语法变体,允许通过将关键片段与字符,通常是一个点(\xe2\x80\x98dot 表示法\xe2\x80\x99)。
\n像这样的关键路径的一个示例是"a.b.0.c"
引用此 JSON 片段中的深度嵌套属性:
{\n "a": {\n "b": [\n {\n "c": 123,\n }\n ]\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n警告:在大多数情况下,使用此方法是一种实用的解决方案,但这意味着必须在属性名称中禁止点字符,或者必须发明更复杂的(绝对从未使用过的属性名称)来转义属性名称中的点/访问嵌套字段。MongoDB在 v5.0 之前就禁止使用"."
in 文档,一些库有字段访问的解决方法( …
我想在商业智能的背景下使用 influxdb:ETL、连接来自其他数据库的数据、创建实时仪表板。目前,我们正在使用标准 BI 工具,例如 QLIK 或 Microsoft PowerBI。
根据文档,HTTP API应该用于查询(https://docs.influxdata.com/influxdb/v1.2/guides/querying_data/)我的问题是API的输出似乎只是JSON。这意味着每个分析师首先必须弄清楚如何将 JSON 转换为表格格式,然后再加入其他数据等。
是否可以告诉 API 生成类似 csv 的表输出?您是否建议使用哪些工具来制作良好的仪表板?我尝试了 grafana,但在加入其他数据时似乎不够。
我是 jq 的新手,我有一个来自 DynamoDB 表的 JSON 文件,我想将其转换为 CSV。这是我的 JSON 文件。
[
{
"SnsPublishTime": {
"S": "2019-07-27T15:07:38.904Z"
},
"SESreportingMTA": {
"S": "dsn; a8-19.smtp-out.amazonses.com"
},
"SESMessageType": {
"S": "Bounce"
},
"SESDestinationAddress": {
"S": "bounce@simulator.amazonses.com"
},
"SESMessageId": {
"S": "0100016c33f91857-600a8e44-c419-4a02-bfd6-7f6908f5969e-000000"
},
"SESbounceSummary": {
"S": "[{\"emailAddress\":\"bounce@simulator.amazonses.com\",\"action\":\"failed\",\"status\":\"5.1.1\",\"diagnosticCode\":\"smtp; 550 5.1.1 user unknown\"}]"
}
}
]
Run Code Online (Sandbox Code Playgroud)
如果我运行,我会得到正确的输出
jq -r '.[] ' test.json
Run Code Online (Sandbox Code Playgroud)
但如果我跑
jq -r '.[] |@csv' test.json
Run Code Online (Sandbox Code Playgroud)
然后我收到一个错误:
jq: error (at test.json:22): object ({"SnsPublis...) 不能是 csv 格式,只有数组
如何正确地将此 JSON 转换为 CSV?我尝试了一个多小时的谷歌搜索,但似乎无法弄清楚。
谢谢!
我正在阅读这个StackOverFlow讨论,将JSON转换为CSV,这似乎很棒,但是我无法使用基本的jq来工作。.我不确定我在做什么错。我已经尝试了基本的操作,但是我无法破解错误。这是我在Shell脚本中的ES查询
curl -XGET 'http://es-1:9200/data_latest/customer/_search?pretty' -H 'Content-Type: application/json' -d'
{
"_source": ["customer_app_version", "customer_num_apps", "customer_name","app_disk_size_bytes","app_memory_capacity_bytes"],
"query": {
"bool": {
"must": [{
"term": {
"is_app_customer": {
"value": "true"
}
}
}]
}
},
"aggs": {
"Customer_UUID": {
"terms": {
"field": "customer_uuid",
"size": 100
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
“ Shell脚本输出
{
"took": 8,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6171,
"max_score": 1.8510876,
"hits": [
{
"_index": "data_latest_v1",
"_type": "customer",
"_id": "0003245-4844-9015-1z2e-d4ae5234rd56",
"_score": 1.8510876,
"_source": …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 jq 将 JSON 输出转换为 CSV。
这是 input.json (精简了很多 - 我最多可能有 600 个数组元素,但每个元素的数量相同):
{
"latitude": [39.582, 39.582, 39.582],
"longitude": [26.675, 26.675, 26.675],
"drivingDifficultyIndex": [0, 34, 34],
"iconCode": [31, 11, 11],
"observationTimeUtcIso": ["2016-06-26T00:20:00+0000", "2016-06-26T01:20:00+0000", "2016-06-26T02:20:00+0000"],
"precip1Hour": [0.0, 0.1, 0.5]
}
Run Code Online (Sandbox Code Playgroud)
迄今为止我最好的尝试是:
jq --raw-output 'keys , .[] | @csv'
Run Code Online (Sandbox Code Playgroud)
这使得
"drivingDifficultyIndex","iconCode","latitude","longitude","observationTimeUtcIso","precip1Hour"
39.582,39.582,39.582
26.675,26.675,26.675
0,34,34
31,11,11
"2016-06-26T00:20:00+0000","2016-06-26T01:20:00+0000","2016-06-26T02:20:00+0000"
0,0.1,0.5
Run Code Online (Sandbox Code Playgroud)
如何使用 jq 将任意简单的 JSON 转换为 CSV?给出了一些很好的提示,但我最终仍然得到行中的数据(如上所示)而不是列中。
我追求的是这样的:
"latitude","longitude","drivingDifficultyIndex","iconCode","observationTimeUtcIso","precip1Hour"
39.582, 26.675, 0, 31, \2016-06-26T00:20:00+0000\", 0
39.582, 26.675, 34, 11, \"2016-06-26T01:20:00+0000\", 0.1
39.582, 26.675, 34, 11, …
Run Code Online (Sandbox Code Playgroud)