如何将多语言文本CSV转换为指定语言的嵌套JSON文件?
多语言CSV转指定语言JSON的最优方案
我有一个包含网站多语言文本的CSV文件,示例如下:
Group,Key,EN,NL Global,yes,yes,ja Global,no,no,neen Menu,openMenu,Open menu,Open menu Menu,signUp,Sign up,Registreer
需要将其转换为对应语言的独立JSON文件,例如荷兰语(NL)的目标格式为:
{ "global": { "yes": "ja", "no": "nee" }, "menu": { "openMenu": "Open menu", "signUp": "Registreer" } }
我的需求是:仅手动指定目标语言(如EN或NL)就能完成转换。之前尝试过在线JSON转换工具自定义模板,但要么出现重复键,要么生成的JSON结构不符合要求;研究过JMESPath,但CSV数据量太大,不想手动输入每个键,没找到可行方案;知道这类问题大多用Python解决,但我完全没Python经验。想请教:把原CSV转成所需JSON格式,或者对转换工具生成的JSON进行格式化的最优方法是什么?
方案1:Excel/Google Sheets手动整理(适合小数据量)
- 只保留Group、Key和目标语言列(比如NL),删掉其他语言列
- 把Group列的内容改成小写
- 按Group列分组,每个分组下把Key作为键、目标语言内容作为值,整理成嵌套的键值对
- 最后用在线JSON格式化工具把整理好的结构转成标准JSON文件
方案2:用Excel内置Power Query工具(无代码,适合中大数据量)
- 用Excel打开CSV文件,点「数据」选项卡 → 「从表格/范围」导入数据(勾选「我的表格有标题」)
- 在Power Query编辑器里,删掉不需要的语言列,只留Group、Key和目标语言列
- 点「转换」选项卡 → 「分组依据」,设置:
- 分组依据:Group
- 新列名:Rows
- 操作:所有行
- 新增自定义列,公式输入
= Record.FromTable([Rows]),把每个分组的行转成键值对结构 - 删除Rows列,再把Group列转成小写(右键Group列 → 「格式」→ 「小写」)
- 点「主页」→「关闭并上载至」,选择「仅创建连接」,然后右键该连接 → 「导出到JSON」,就能得到符合要求的文件
方案3:极简Python脚本(无经验也能快速上手)
即使完全不懂Python,按以下步骤操作就行:
- 去Python官网下载安装包,安装时一定要勾选「Add Python to PATH」
- 在CSV文件所在文件夹里,新建一个文本文件,改名为
csv_to_json.py,复制下面的代码进去:
import csv import json import sys def convert_csv_to_json(csv_file, target_lang): result = {} with open(csv_file, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: group = row['Group'].lower() key = row['Key'] value = row[target_lang] if group not in result: result[group] = {} result[group][key] = value output_file = f"{target_lang}.json" with open(output_file, 'w', encoding='utf-8') as f: json.dump(result, f, indent=4, ensure_ascii=False) print(f"已成功生成{output_file}") if __name__ == "__main__": if len(sys.argv) != 3: print("用法:python csv_to_json.py <你的CSV文件名> <目标语言代码>") print("示例:python csv_to_json.py translations.csv NL") sys.exit(1) csv_file = sys.argv[1] target_lang = sys.argv[2] convert_csv_to_json(csv_file, target_lang)
- 打开命令提示符(Windows)或终端(Mac/Linux),切换到这个文件夹,运行命令:
把python csv_to_json.py 你的CSV文件名.csv NL你的CSV文件名.csv换成实际的文件名,NL换成你需要的语言代码(比如EN),回车后就能自动生成对应语言的JSON文件
内容的提问来源于stack exchange,提问作者Sarah Van Den Berghe
相关产品推荐
相关产品推荐

