如何用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
相关产品推荐
相关产品推荐

