Python入门求助:修改代码实现读完文件后提取比特币价格并追加数据
问题修复与需求实现
一、现有代码的问题
- 缩进错误:
with open('data.txt') as file:后的for循环未缩进,会触发Python语法错误。 - 逻辑错误:
else块里的count == 0是比较操作而非赋值,且每一行不匹配都打印"Not found",会导致大量重复输出。 - 硬编码切片风险:用
line[13:21]提取价格依赖固定行格式,一旦行内容长度变化,提取结果必然出错。
二、读取完所有内容后展示价格的修复代码
先把所有符合条件的价格收集到列表,读完文件后统一输出:
sentences = [] words_count = 0 word = input("Enter word: ") count = 0 btc_prices = [] # 存储所有提取到的比特币价格 # 读取文件全部内容 with open('data.txt') as file: for line in file: words = line.split() words_count += len(words) sentences.append(line) # 遍历筛选并收集价格 for line in sentences: if word in line: # 建议替换为更灵活的提取方式,比如按分隔符拆分 # 示例:若行格式为"xxx BTC: 45000.00 xxx",可拆分为parts = line.split(),取parts[2] # 暂时保留你的切片逻辑,后续可优化 btc = line[13:21].strip() # 去除多余空格 btc_prices.append(btc) count += 1 # 统一展示提取结果 if btc_prices: print("提取到的比特币价格:") for price in btc_prices: print(price) else: print('未找到包含指定关键词的行') print(count, '行包含关键词', word)
三、实现追加提取数据到文件
如果要把提取到的价格追加到文件(比如btc_prices.txt),在收集完价格后用'a'模式(追加模式)写入即可:
# 在上述代码末尾添加这段逻辑 if btc_prices: with open('btc_prices.txt', 'a', encoding='utf-8') as f: # 每行写入一个价格,可自定义格式 for price in btc_prices: f.write(f"{price}\n") print("价格已成功追加到btc_prices.txt")
关键优化提示
'a'模式打开文件时,新内容会追加到文件末尾,不会覆盖原有内容;若文件不存在则自动创建。- 提取价格时尽量避免硬编码切片,推荐用正则匹配或按固定标识拆分,比如行内有明确的价格前缀(如"BTC Price: "):
这种方式不受行内容长度变化影响,稳定性更强。import re # 匹配行内类似"BTC Price: 45678.90"的价格 match = re.search(r'BTC Price: (\d+\.\d+)', line) if match: btc = match.group(1) btc_prices.append(btc)
内容的提问来源于stack exchange,提问作者Paora
相关产品推荐
相关产品推荐

