下面是从弹性搜索中获取一些数据并将这些数据导出到名为“mycsvfile”的csv文件的代码。 我想更改列名,以便它可以被人阅读。 代码如下:
from elasticsearch import Elasticsearch
import csv
es = Elasticsearch(["9200"])
# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
{
"_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
"query": {
"bool": {
"should": [
{"wildcard": {"CN": "TEST1"}}
]
}
}
}, size=10)
with open('mycsvfile.csv', 'w') as f: # Just use 'w' mode in 3.x
header_present = False
for doc in res['hits']['hits']:
my_dict = doc['_source']
if not header_present:
w = csv.DictWriter(f, my_dict.keys())
w.writeheader()
header_present = True
w.writerow(my_dict)
当我运行上述查询时,CSV文件数据如下所示:
DTDT TRDT SPLE SACL RPLE
20170512 12/05/2017 15:39 1001 0 0
20170512 12/05/2017 15:39 1001 0 0
20170908 08/09/2017 02:42 1001 0 0
20170908 08/09/2017 06:30 1001 0 0
如您所见,列名与查询中的列名相同,我希望在生成文件时为它们提供可读的名称。例如,我想用日期代替DTDT,TRDT是时间等
有人可以显示和修复我的代码为我输入列名到CSV文件?你知道吗
先谢谢你
一种简单的方法是将dict用作转换表,并将其作为行写入,而不是写入实际的DictWriter头:
编辑:对不起,是我背后写的那句话。正确的、经过测试的版本如下。你知道吗
是什么让你的脚本写出来的标题是我的_听写键()传递给听写器。用标签列表替换这些键,编写者应该正确地编写。你知道吗
相关问题 更多 >
编程相关推荐