如何将多行CSV转换为单行JSON字符串用于REST API?
解决CSV多行转JSON格式字符串的问题
我来帮你搞定这个把CSV多行键值对转成REST API所需的JSON格式字符串的问题!先梳理下你的需求:把CSV里的每行Key Value格式数据,转换成"key1":"Value1","key2":"Value2","key3":"Value3"这样的字符串,对吧?
问题分析
你现在的代码思路是对的,但还没完成拼接逻辑,另外要注意几个细节:比如跳过CSV的标题行(第一行Key Value)、处理CSV的分隔符(如果是空格分隔的话,需要指定delimiter=' '),还有把键名转成小写匹配你的示例输出。
完整解决方案代码
下面是可以直接运行的代码,分两种场景:
场景1:生成你需要的属性字符串(不带大括号)
import csv # 用来存储每个格式化后的键值对 key_value_list = [] with open('file.csv', 'r') as csvfile: # 如果你的CSV是空格分隔,一定要指定delimiter=' ',默认是逗号 csv_reader = csv.reader(csvfile, delimiter=' ') # 跳过第一行的标题行(Key Value) next(csv_reader) for row in csv_reader: # 确保每行有两个元素,避免索引错误 if len(row) == 2: key, value = row # 格式化成"key":"value",同时把键名转小写 key_value_list.append(f'"{key.lower()}":"{value}"') # 用逗号连接所有键值对,得到最终字符串 result = ','.join(key_value_list) print(f'Json= {result}')
场景2:生成完整的JSON对象(如果后续API需要完整的JSON结构)
如果你的REST API需要的是完整的JSON对象(比如{"key1":"Value1","key2":"Value2"}),可以用csv.DictReader配合json模块来实现:
import csv import json data_dict = {} with open('file.csv', 'r') as csvfile: csv_reader = csv.DictReader(csvfile, fieldnames=['key', 'value'], delimiter=' ') next(csv_reader) # 跳过标题行 for row in csv_reader: data_dict[row['key'].lower()] = row['value'] # 转换成标准JSON字符串 full_json = json.dumps(data_dict) print(f'Json= {full_json}')
关键细节说明
- 跳过标题行:用
next(csv_reader)跳过第一行的Key Value,避免把标题也当成数据处理 - 分隔符指定:如果你的CSV是空格分隔,必须设置
delimiter=' ',否则csv.reader会默认按逗号拆分,导致读取错误 - 高效拼接:用列表收集每个键值对再用
join拼接,比循环里直接累加字符串性能更好,尤其是数据量大的时候 - 键名小写:用
key.lower()把Key1转成key1,匹配你想要的输出格式
内容的提问来源于stack exchange,提问作者Naba Ansari
相关产品推荐
相关产品推荐

