You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python CSV转JSON代码适配ElasticSearch批量导入格式

没问题,我帮你调整代码来生成ElasticSearch批量导入需要的特定格式,修改后的代码和说明如下:

修改后的代码
import csv
import sys
import json

# EDIT THIS LIST WITH YOUR REQUIRED JSON KEY NAMES
fieldnames=["id","team_name","team_members"]

def convert(filename):
    csv_filename = filename[0]
    print("Opening CSV file: ", csv_filename)
    f = open(csv_filename, 'r')
    next(f) # skip the headers
    csv_reader = csv.DictReader(f, fieldnames)
    json_filename = csv_filename.split(".")[0] + ".json"
    print("Saving JSON to file: ", json_filename)
    
    # 使用with语句自动管理文件,避免手动关闭的疏漏
    with open(json_filename, 'w') as jsonf:
        for row in csv_reader:
            # 先写入ElasticSearch需要的索引指令
            jsonf.write(json.dumps({"index" : {}}) + '\n')
            # 再写入当前行的JSON数据
            jsonf.write(json.dumps(row) + '\n')
    
    f.close()

if __name__ == "__main__":
    convert(sys.argv[1:])
关键改动说明
  • 去掉JSON数组包装:不再把所有数据打包成一个JSON数组,而是逐行处理每条数据,自然就移除了首尾的[]。
  • 添加索引标记行:遍历每一行CSV数据时,先写入{"index" : {}},完全匹配你需要的格式要求。
  • 强制换行格式化:每条指令和数据都单独占一行,通过+ '\n'确保输出的换行格式正确。
  • 优化文件操作:用with语句处理JSON文件,它会自动帮你关闭文件,比手动调用close()更安全可靠。
验证输出效果

运行修改后的代码后,生成的JSON文件内容会和你期望的完全一致:

{"index" : {}}
{"team_name": "Biology, Neurobiology ", "team_members": "Ali Smith, Jon Doe", "id": "123"}
{"index" : {}}
{"team_name": "Mathematics", "team_members": "Jane Smith", "id": "234"}
{"index" : {}}
{"team_name": "Statistics, Probability", "team_members": "Matt P, Albert Shaw", "id": "345"}
{"index" : {}}
{"team_name": "Chemistry", "team_members": "Andrew M, Matt Shaw, Ali Smith", "id": "456"}
{"index" : {}}
{"team_name": "Physics", "team_members": "Joe Doe, Jane Smith, Ali Smith ", "id": "678"}

内容的提问来源于stack exchange,提问作者sharp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:05:30