如何用Python3根据不同属性组文本生成指定格式JSON文件
Python3 实现文本文件转指定格式JSON
实现思路
- 读取输入文本文件,按空行分割为三个数据组(水果、动物、汽车品牌)
- 为每个组的元素添加带编号的前缀(如
fruit_1、animal_2) - 将所有键值对整合为字典,最终写入格式化的JSON文件
代码实现
import json # 读取输入文本文件(假设文件名为input.txt) with open('input.txt', 'r', encoding='utf-8') as input_file: raw_content = input_file.read() # 拆分内容为三个数据组,过滤每组内的空行 data_groups = [] for block in raw_content.split('\n\n'): cleaned_items = [line.strip() for line in block.splitlines() if line.strip()] data_groups.append(cleaned_items) # 定义每个数据组对应的前缀 prefixes = ['fruit', 'animal', 'brand'] # 构建目标JSON字典 final_dict = {} for prefix, items in zip(prefixes, data_groups): # 从1开始为元素编号 for index, item in enumerate(items, start=1): key_name = f"{prefix}_{index}" final_dict[key_name] = item # 写入JSON文件(生成格式与示例一致) with open('output.json', 'w', encoding='utf-8') as output_file: # 生成带缩进的格式化JSON json.dump(final_dict, output_file, indent=2, ensure_ascii=False) # 可选:若需保留示例中的末尾逗号(非严格JSON格式),可替换上述写入步骤为以下代码 # json_string = json.dumps(final_dict, indent=2, ensure_ascii=False) # # 在最后一个键值对后添加逗号 # formatted_json = json_string.rstrip('}') + ',\n}' # with open('output.json', 'w', encoding='utf-8') as output_file: # output_file.write(formatted_json)
代码说明
- 读取文件:使用
with语句确保文件资源自动释放,读取全部内容后按空行拆分。 - 数据清洗:过滤每个数据组内的空行和空白字符,避免无效数据。
- 构建字典:通过
zip将前缀与数据组一一对应,使用enumerate从1开始生成编号,拼接成目标键名。 - 写入JSON:
json.dump的indent=2参数保证输出格式和示例一致,ensure_ascii=False兼容非ASCII字符。 - 末尾逗号处理:示例JSON包含末尾逗号(非严格JSON规范),若需完全匹配示例,可使用可选代码块手动添加。
内容的提问来源于stack exchange,提问作者Keshav Melnad
相关产品推荐
相关产品推荐

