python - 从 Elasticsearch 导出的CSV文件中的可读列名称?

标签 python python-3.x csv elasticsearch python-3.6

以下是从 Elasticsearch 中获取一些数据并将其导出到名为“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

如您所见,列名与查询中的列名相同,并且我想在生成文件时为它们提供可读的名称。例如,我想要的不是DDT,而是DATE,而TRDT是TIME等。

有人可以替我显示并修改我的代码,以便将列名称输入CSV文件吗?

先感谢您

最佳答案

编辑:对不起,那条线是我写的。正确的,经过测试的版本如下。

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:
            fieldnames = ['name', 'name', 'name']
            w = csv.DictWriter(f, fieldnames=fieldnames)
            w.writeheader()
            header_present = True

        w.writerow(my_dict)

使脚本写出 header 的原因是传递给DictWriter的my_dict.keys()。用标签列表替换这些键,编写者应该正确地编写它。

关于python - 从 Elasticsearch 导出的CSV文件中的可读列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46692763/

相关文章:

python - TensorFlow - 根据另一个变量的形状动态定义变量的形状

python - 不构建模型时,占位符和变量之间有区别吗?

javascript - Datatable-无法使用 tabletools 将新添加的行导出到 CSV 文件

php - 从 csv 文件大量插入

python - 在 Django 中解析 json 中的日期

python - 为什么我的 webapp2 import/Google App Engine "Hello, World"不工作?

python - 在 TfidfVectorizer() 中输入文档术语频率矩阵?

python-3.x - 在 Python 3 中对字典进行子集化

python-3.x - python - Cloud Firestore - 将数据附加到子集合

java - 将 csv 文件读入数组