如何在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
相关产品推荐
相关产品推荐

