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}
原代码问题分析
你提供的代码存在以下问题:
- 未处理文件读取后的空行(
split('\n')可能产生空字符串) - 处理范围格式时,仅拆分了连字符,未对每个数字执行减1操作,也未拼接成冒号格式
- 每次循环直接打印单个结果,未将所有结果收集后整理成目标格式
- 未正确管理文件资源(未关闭文件,建议使用
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
相关产品推荐
相关产品推荐

