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

用Python给TXT文件每行首个数字减1遇问题:代码致内容丢失

问题:批量修改文本文件每行首数字减1

我有一个TXT文件,内容如下:

10 0.4600 0.4833 0.0433 0.0833
4 0.7833 0.6350 0.1167 0.0933
7 0.3583 0.4933 0.1667 0.1700

需要将每行第一个数字减1,同时保留其余浮点数,得到结果:

9 0.4600 0.4833 0.0433 0.0833
3 0.7833 0.6350 0.1167 0.0933
6 0.3583 0.4933 0.1667 0.1700

我尝试了以下代码,但执行后文件内容完全消失:

path = 'file.txt'
with open(path, "r+") as f:
  lines = f.readlines()
lines = str(int(lines[0].split()[0]) - 1)
with open(path, 'w') as file:
  file.writelines(lines)

错误原因

  • 仅处理了第一行的首数字,直接将lines变量替换为单个数字的字符串,丢失了所有其他行的内容
  • 使用w模式打开文件会清空原有内容,最终只写入了单个数字,导致原文件内容看似"消失"

正确代码实现

path = 'file.txt'

# 读取并处理所有行
with open(path, 'r') as f:
    processed_lines = []
    for line in f:
        # 跳过空行避免报错
        if not line.strip():
            continue
        # 拆分每行内容
        parts = line.split()
        # 首数字减1后转回字符串
        parts[0] = str(int(parts[0]) - 1)
        # 重新拼接为原格式的行
        processed_line = ' '.join(parts) + '\n'
        processed_lines.append(processed_line)

# 写入处理后的内容
with open(path, 'w') as f:
    f.writelines(processed_lines)

代码说明

  • 逐行读取文件,对每一行单独处理,保留原格式
  • 自动跳过空行,避免拆分空内容导致的错误
  • 处理完成后批量写入所有行,覆盖原文件完成修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:16:16