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

Python代码修正请求:实现文件逐行读取与数字转换格式调整

修正Python代码实现数字转换与格式输出

需求说明

有一个名为s1.txt的文本文件,内容如下:

1
3-5
10
11-13
111
113-150
1111
1123-1356

需要编写Python程序完成以下操作:

  • 逐行读取该文件
  • 将每个数字减1
  • 把连字符-替换为冒号:
  • 最终输出单行指定格式,预期结果:
{0 2:4 9 10:12 110 112:149 1110 1122:1355}

原代码问题分析

你提供的代码存在以下问题:

  1. 未处理文件读取后的空行(split('\n')可能产生空字符串)
  2. 处理范围格式时,仅拆分了连字符,未对每个数字执行减1操作,也未拼接成冒号格式
  3. 每次循环直接打印单个结果,未将所有结果收集后整理成目标格式
  4. 未正确管理文件资源(未关闭文件,建议使用with语句自动处理)

修正后的代码

s1_file = input("Enter the name of the S1 file: ")
result = []

# 使用with语句自动管理文件,避免资源泄漏
with open(s1_file, "r") as s1_text:
    for line in s1_text:
        line = line.strip()  # 去除换行符和前后空白
        if not line:  # 跳过空行
            continue
        if '-' in line:
            # 处理范围格式:拆分后每个数字减1,再用冒号连接
            start, end = map(int, line.split('-'))
            processed = f"{start - 1}:{end - 1}"
        else:
            # 处理单个数字:转int减1后转字符串
            processed = str(int(line) - 1)
        result.append(processed)

# 拼接成目标格式并输出
print('{' + ' '.join(result) + '}')

代码说明

  • with open(...):自动处理文件打开与关闭,无需手动调用close()
  • line.strip():去除每行的换行符和前后空白,避免空行干扰
  • 拆分范围后用map(int, ...)快速转换为整数,执行减1操作后用f-string拼接成冒号格式
  • 所有处理后的结果存入列表,最后用' '.join(result)拼接为空格分隔的字符串,再包裹大括号得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:55:42