Python将文件最后一个单词转为大写并写入新文件的问题排查
问题分析与修改方案
问题根源
- 语法错误与无效操作:代码中
Lst[length-1]).upper()多了一个右括号,且即便修正括号,upper()方法仅返回新的大写字符串,不会修改原列表元素(字符串是不可变类型),必须将转换结果重新赋值给列表对应位置才会生效。 - 文件写入格式问题:
writelines(Lst)会直接拼接列表中所有字符串,丢失原文件的空格分隔,导致内容连在一起。
修正后的代码
# 读取原文件内容 with open('text.txt', 'r') as file: content = file.read() word_list = content.split() print(word_list) # 将最后一个单词转为大写并更新列表 if word_list: word_list[-1] = word_list[-1].upper() print(word_list) # 写入新文件,保留空格分隔格式 with open("newfile.txt", "w") as newfile: newfile.write(' '.join(word_list))
关键优化点
- 用
with语句管理文件,自动完成关闭操作,避免手动close()可能出现的遗漏。 - 直接用
word_list[-1]获取最后一个元素,替代len()计算索引的冗余写法。 - 增加
if word_list判断,防止原文件为空时触发索引越界错误。 - 通过
' '.join(word_list)把列表元素用空格拼接成完整字符串,保证输出格式与原文件一致。
内容的提问来源于stack exchange,提问作者user313131
相关产品推荐
相关产品推荐

