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

如何用Python从文本文件中剔除三字母及更短的单词行并导出新文件

代码问题修正

原代码存在几处会导致运行报错、输出不符合预期的问题:

  • 长度计算未排除换行符:readlines()读取的每一行自带末尾换行标识,直接计算行长度会把换行符计入统计,导致长度判断不准。
  • 判断逻辑方向反向:需求是剔除长度≤3个字母的单词,原代码却设置为长度小于3的行才会被写入新文件,和目标完全相反。
  • 字符串方法调用错误:line.replace(s, 'new')里的s是数值类型的长度值,而replace()方法需要传入要匹配的字符串子串,运行会直接触发类型报错。
  • 文件操作流程错误:读文件的关闭语句漏写了括号,没有真正执行关闭;写文件的关闭语句被放在for循环内部,第一次循环就会关闭文件句柄,后续内容无法正常写入。

可直接运行的修正实现

优先使用with上下文管理器操作文件,无需手动编写关闭逻辑,避免资源泄露:

# 同时打开读写两个文件,逐行处理
with open('test.txt', 'r', encoding='utf-8') as f_in, open('text4.txt', 'w', encoding='utf-8') as f_out:
    for line in f_in:
        # 去除行尾换行符,计算单词的实际字母长度
        current_word = line.strip()
        # 仅保留长度大于3的单词行,写入新文件
        if len(current_word) > 3:
            f_out.write(f"{current_word}\n")

运行上述代码后生成的text4.txt内容和预期完全一致,会自动剔除sat、cow这类3个字母及以下的单词行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 19:27:03