在数据处理和存储过程中,文本文件与 JSON 格式是两种常见的数据表示方式。文本文件因其简单易读而广泛使用,而 JSON 格式则因其结构化和与编程语言的良好兼容性而受到青睐。因此,将文本文件转换为 JSON 格式的一项重要技术任务,在许多场景中都有其应用价值。

接下来,我将介绍如何实现一个 Python 函数,将文本文件的内容转换为 JSON 格式。此函数将兼容多行题目、多个选项和无序号选项。

1. 准备工作

首先,我们需要明确文本文件的格式。假设我们的文本文件内容如下所示:

问题 1: Python 是哪种类型的语言?
A. 编译型
B. 解释型
C. 复合型
D. 脚本型

问题 2: Python 的主要应用领域有哪些?
- 数据分析
- web 开发
- 人工智能
- 自动化脚本

在这个例子中,问题以“问题 x:”开头,选项可以是带编号的(如 A、B、C、D),或是无序的(类似 - 的格式)。

2. 编写转换函数

下面是一个 Python 函数 convert_text_to_json,它可以将上述文本格式转换为 JSON 格式:

import json

def convert_text_to_json(file_path):
    """
    将文本文件转换为 JSON 格式
    :param file_path: 文本文件的路径
    :return: 转换后的 JSON 数据
    """
    result = {}

    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        current_question = None

        for line in lines:
            line = line.strip()  # 去除行首尾空白字符

            # 检测问题行
            if line.startswith('问题'):
                if current_question is not None:
                    result[current_question['title']] = current_question['options']

                # 创建新的问题字典
                current_question = {
                    'title': line,
                    'options': []
                }

            # 检测选项行
            elif line.startswith(('A.', 'B.', 'C.', 'D.')) or line.startswith('-'):
                option = line.split('. ')[-1] if '.' in line else line[1:].strip()
                current_question['options'].append(option)

        # 将最后一个问题添加到结果中
        if current_question is not None:
            result[current_question['title']] = current_question['options']

    # 转换为 JSON 格式
    return json.dumps(result, ensure_ascii=False, indent=2)

# 调用函数并打印结果
json_data = convert_text_to_json('questions.txt')
print(json_data)

3. 代码分析

在这个示例中,我定义了一个函数 convert_text_to_json,它接受一个文本文件的路径,并读取文件的内容。函数内部使用了一个字典 result 来存储最终的结果。

  1. 读取文件:使用 with open(file_path, 'r', encoding='utf-8') as file: 来打开并读取文本文件。
  2. 处理每一行
  3. 如果当前行以“问题”开头,表示找到一个新问题,重置 current_question
  4. 识别选项行,可以是带编号或者无序项,并将选项添加到当前问题的选项列表中。
  5. 转换为 JSON:利用 json.dumps 方法将结果转换为 JSON 格式,并确保中文字符正常显示。

4. 结束语

通过上述步骤,我们可以轻松地将具有特定格式的文本文件转换为结构化的 JSON 数据。这种转换在数据存储、解析以及在不同系统之间的数据交互等方面都具有重要意义。希望这篇文章能为你提供一些实用的思路和代码示例,以便在以后的开发中使用这一技术。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部