【发布时间】:2017-10-18 15:12:00
【问题描述】:
当创建 CSV 文件时,列并没有像我希望的那样位于正确的位置。例如,列“Period”(变量为“RD”)是文件中的第二列等。
有没有办法将每列的位置设置为我想要的位置?
我的代码:
from datetime import datetime
from elasticsearch import Elasticsearch
import csv
es = Elasticsearch(["9200"])
res = es.search(index="search", body=
{
"_source": ["VT","NCR","N","DT","RD"],
"query": {
"bool": {
"must": [{"range": {"VT": {
"gte": "now/d",
"lte": "now+1d/d"}}},
{"wildcard": {"user": "mike*"}}]}}},size=10)
csv_file = 'File_' + str(datetime.now().strftime('%Y_%m_%d - %H.%M.%S')) + '.csv'
header_names = { 'VT': 'Date', 'NCR': 'ExTime', 'N': 'Name', 'DT': 'Party', ' RD ': 'Period'}
with open(csv_file, 'w', newline='') as f:
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.writerow(header_names,)
header_present = True
w.writerow(my_dict)
【问题讨论】:
-
这样不行,我试过了
-
@RomanPerekhrest 这是一个 Elasticsearch 列表,而不是 Python 列表。结果是 JSON,因此不保留顺序
标签: python python-3.x csv python-3.6