【发布时间】:2018-03-23 05:08:24
【问题描述】:
以下是从弹性搜索中获取一些数据并将该数据导出到名为“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
如您所见,列名与查询中的相同,我想在生成文件时为它们提供可读的名称。
有人可以显示并修复我的代码,以便我在 CSV 文件中输入列名吗?
提前谢谢你
【问题讨论】:
-
你的问题很难理解。你的意思是你对“DTDT”不满意,你想给这个列一个不同的名字,例如“日期”?
-
正确,我想命名日期等列,抱歉造成混淆,你能编辑我的代码并告诉我怎么做吗?
-
为了清楚起见,我已经编辑了您的问题并回答了它。
-
我看到了,谢谢!
标签: python python-3.x csv elasticsearch python-3.6