You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中读取文本文件并分离标签与金额数组,进而生成带正确标签的饼图?

嘿,我来帮你搞定这个需求!你的思路完全正确——把标签和金额分离到不同数组确实是处理这类数据的最优方式,接下来我一步步给你讲具体实现步骤:

步骤1:读取并解析expenses.txt文件

首先我们需要读取文件内容,然后把每一项的标签和金额拆分出来。由于你的文件里各项用中文顿号分隔,标签和金额之间是冒号加空格,我们可以用字符串分割来处理:

import matplotlib.pyplot as plt  # 后续绘图需要用到这个库

# 读取文件内容
with open('expenses.txt', 'r', encoding='utf-8') as file:
    # 读取后去掉首尾的空白字符(比如换行)
    expense_content = file.read().strip()

# 把内容按中文顿号分割成单个支出项
expense_items = expense_content.split('、')

# 初始化两个空列表分别存标签和金额
expense_labels = []
expense_amounts = []

# 遍历每个支出项,拆分标签和金额
for item in expense_items:
    # 按": "分割,把标签和金额字符串分开
    label, amount_str = item.split(': ')
    expense_labels.append(label)
    # 将金额字符串转为整数(如果有小数就用float())
    expense_amounts.append(int(amount_str))
步骤2:生成带标签的饼图

用Matplotlib库来绘制饼图,我们可以给饼图加上标签、百分比显示,让它更直观:

# 创建一个8x8英寸的画布,保证饼图不会变形
plt.figure(figsize=(8, 8))

# 绘制饼图:传入金额、标签,设置百分比显示格式,起始角度
plt.pie(expense_amounts, 
        labels=expense_labels, 
        autopct='%1.1f%%',  # 显示一位小数的百分比
        startangle=90)      # 让饼图从90度位置开始(顶部)

# 强制饼图为正圆形,避免拉伸变形
plt.axis('equal')

# 添加标题
plt.title('Monthly Expenses Breakdown')

# 显示饼图
plt.show()
一些小提示
  • 如果你的expenses.txt里有小数金额(比如Food: 20.5),只需要把int(amount_str)改成float(amount_str)就行
  • 如果文件编码不是utf-8,可以把encoding='utf-8'改成对应编码(比如gbk)
  • autopct参数可以调整百分比的显示格式,比如%d%%就是显示整数百分比

这样运行代码后,你就能得到一个标签准确、带百分比的月度支出饼图啦!

内容的提问来源于stack exchange,提问作者Moss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:07:43