如何修改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
相关产品推荐
相关产品推荐

