下面是從彈性搜索中獲取一些數據並將該數據導出到名爲'mycsvfile'的csv文件的代碼。 我想更改列名以便它可以被人讀取。 下面是代碼:我的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,我希望DATE和TRDT是TIME等。
有人可以顯示並修復我的代碼,以便爲CSV文件輸入列名嗎?
謝謝你提前
我換成「w.writerow(my_dict)」與 - w.writeheader('column_name','column_name','column_name','column_name')的答案。 但我現在收到一個錯誤 - Traceback(最近調用最後一個): 文件「C:/Users/.PyCharmCE2017.2/config/scratches/test1.py」,第28行,在 w.writeheader ('column_name','column_name','column_name','column_name') TypeError:writeheader()需要1個位置參數,但給出5個。 是因爲我得到了my.dict裏面的w.writeheader? –
Rich
在實際閱讀文檔後修改了答案:) – CHURLZ
感謝您的關注,我運行代碼並創建了文件,但它不再抓取我的數據?代碼中是否存在缺失的內容? – Rich