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

如何用Python 3从大文件中提取仅非ASCII外文内容?

解决方案

1. 原代码的核心问题

  • line.isascii()不会抛出异常,它仅返回布尔值(True/False),所以你的try-except块完全无法实现预期逻辑。
  • 读取文件时未指定编码,导致包含非ASCII字符的行无法被正确解码,这是你遇到报错的直接原因。
  • 当前逻辑会写入整行内容,而非仅保留非ASCII字符。

2. 修正后的代码

# 使用with语句自动管理文件生命周期,指定UTF-8编码确保兼容多语言字符
with open("test_doc.txt", 'r', encoding='utf-8') as sourceDoc, open("test_doc_dest.txt", 'w', encoding='utf-8') as destDoc:
    for line in sourceDoc:
        # 遍历每行字符,仅保留非ASCII的字符
        filtered_content = ''.join([char for char in line if not char.isascii()])
        destDoc.write(filtered_content)

代码说明

  • encoding='utf-8':强制使用UTF-8编码读取和写入文件,避免非ASCII字符的解码/编码错误。
  • [char for char in line if not char.isascii()]:通过列表推导式筛选出每行中所有非ASCII的字符(即你需要保留的外文内容)。
  • ''.join(...):将筛选后的字符列表拼接成完整字符串,写入目标文件。
  • with语句:无需手动调用close(),代码块结束后会自动关闭文件,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:07:04