Python动态处理文本文件:替换符号、拆分数值求和及统计条目数
动态处理工具价格文本文件的Python解决方案
我明白你的需求了——要处理那种用#分隔工具名和价格的文本文件,而且得能适配文件内容的变化,不能写死逻辑。下面我给你一套灵活的实现方案,不管文件里有多少条目、价格格式怎么变(只要是合法的浮点数)都能搞定:
1. 核心实现思路
- 读取文件内容后,全局替换
#为$,满足格式转换需求 - 按空格自动拆分所有“工具+价格”条目,不用硬编码条目数量
- 对每个条目拆分出价格部分,转换为数值后累加求和
- 直接通过拆分后的列表长度统计条目总数,适配任意数量的工具
2. 完整可复用代码
def process_tool_prices(file_path): # 读取文件内容,自动去除首尾空白字符 with open(file_path, 'r', encoding='utf-8') as f: raw_content = f.read().strip() # 全局替换#为$,生成格式化内容 formatted_content = raw_content.replace('#', '$') print("格式化后的文本内容:", formatted_content) # 按空格拆分所有工具条目 tool_items = formatted_content.split() item_count = len(tool_items) # 累加计算总价,同时处理异常格式 total_price = 0.0 for item in tool_items: try: # 拆分出$后面的价格字符串,转换为浮点数 price = float(item.split('$')[1]) total_price += price except (IndexError, ValueError): print(f"⚠️ 警告:条目「{item}」格式无效,已跳过统计") # 输出最终结果 print(f"\n统计结果:") print(f"- 工具条目总数: {item_count}") print(f"- 所有工具总价: ${total_price:.2f}") return item_count, total_price # 调用示例(替换成你的文件路径) if __name__ == "__main__": process_tool_prices("tools.txt")
3. 为什么这套代码能适配文件变化?
- 无硬编码逻辑:不管文件里有1个还是100个工具,
split()都会自动识别并拆分所有条目 - 容错机制:如果某个条目的价格格式错误(比如不是数字、缺少分隔符),程序会跳过该条目并给出提示,不会直接崩溃
- 通用格式兼容:只要条目保持「名称#价格」的基础格式,不管名称长短、价格是整数还是小数都能处理
示例运行效果
假设
tools.txt内容为:hammer#9.95 saw#20.15 shovel#35.40
运行代码后输出:
格式化后的文本内容: hammer$9.95 saw$20.15 shovel$35.40统计结果:
- 工具条目总数: 3
- 所有工具总价: $65.50
内容的提问来源于stack exchange,提问作者gonnaflynow720
相关产品推荐
相关产品推荐

