CSV、XML、JSON三种形式进行存储并读取

cor0000 / 2024-10-14 / 原文

下面是一个完整的 Python 示例代码,它可以生成简单的算式(加法、减法、乘法、除法),并将生成的算式和习题长期保存到 CSV、XML 和 JSON 三种格式中。代码包括生成算式的功能,以及将数据保存和读取的功能。

1. 代码实现

python
import csv
import json
import xml.etree.ElementTree as ET
import random
import os

# 生成算式
def generate_expressions(num_expressions=10):
    operations = ['+', '-', '*', '/']
    expressions = []
    
    for _ in range(num_expressions):
        num1 = random.randint(1, 100)
        num2 = random.randint(1, 100)
        operation = random.choice(operations)
        
        # 避免除以零
        if operation == '/' and num2 == 0:
            num2 += 1
        
        expression = f"{num1} {operation} {num2}"
        expressions.append(expression)
    
    return expressions

# 保存为 CSV 文件
def save_to_csv(expressions, filename='expressions.csv'):
    with open(filename, mode='w', newline='') as file:
        writer = csv.writer(file)
        writer.writerow(['Expression'])
        for expr in expressions:
            writer.writerow([expr])

# 保存为 JSON 文件
def save_to_json(expressions, filename='expressions.json'):
    with open(filename, 'w') as file:
        json.dump({'expressions': expressions}, file)

# 保存为 XML 文件
def save_to_xml(expressions, filename='expressions.xml'):
    root = ET.Element('Expressions')
    for expr in expressions:
        item = ET.SubElement(root, 'Expression')
        item.text = expr
    
    tree = ET.ElementTree(root)
    tree.write(filename)

# 读取 CSV 文件
def read_from_csv(filename='expressions.csv'):
    with open(filename, mode='r') as file:
        reader = csv.reader(file)
        next(reader)  # 跳过表头
        return [row[0] for row in reader]

# 读取 JSON 文件
def read_from_json(filename='expressions.json'):
    with open(filename, 'r') as file:
        data = json.load(file)
    return data['expressions']

# 读取 XML 文件
def read_from_xml(filename='expressions.xml'):
    tree = ET.parse(filename)
    root = tree.getroot()
    return [elem.text for elem in root.findall('Expression')]

# 主程序
if __name__ == "__main__":
    num_expressions = 10  # 生成10个算式
    expressions = generate_expressions(num_expressions)

    # 保存到不同格式的文件
    save_to_csv(expressions)
    save_to_json(expressions)
    save_to_xml(expressions)

    # 读取并打印保存的数据
    print("From CSV:", read_from_csv())
    print("From JSON:", read_from_json())
    print("From XML:", read_from_xml())

2. 代码说明

  • 生成算式:使用 generate_expressions 函数生成指定数量的随机算式。
  • 保存功能
    • save_to_csv: 将算式保存为 CSV 格式。
    • save_to_json: 将算式保存为 JSON 格式。
    • save_to_xml: 将算式保存为 XML 格式。
  • 读取功能
    • read_from_csv: 从 CSV 文件读取算式。
    • read_from_json: 从 JSON 文件读取算式。
    • read_from_xml: 从 XML 文件读取算式。
  • 主程序:生成算式,保存到三种格式的文件,并读取并打印保存的数据。

3. 运行代码

确保在您的 Python 环境中安装了必要的库,然后运行上述代码。它会生成随机算式,并将其保存到三个不同的文件中,然后读取这些文件并打印内容。

4. 依赖库

该代码使用 Python 的标准库,不需要安装任何额外的依赖。您可以在任何支持 Python 的环境中直接运行。