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

Python入门求助:修改代码实现读完文件后提取比特币价格并追加数据

问题修复与需求实现

一、现有代码的问题

  1. 缩进错误:with open('data.txt') as file: 后的for循环未缩进,会触发Python语法错误。
  2. 逻辑错误:else块里的count == 0是比较操作而非赋值,且每一行不匹配都打印"Not found",会导致大量重复输出。
  3. 硬编码切片风险:用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:40:16