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

如何对txt文件使用nltk.sents()?读取文件输出乱码该如何解决?

解决方案

方法1:修复原有PlaintextCorpusReader代码

你出现乱码的核心原因是调用PlaintextCorpusReader时没有显式指定编码,Windows系统默认会用GBK编码读取UTF-8格式的文件,就会出现编码异常。修改代码如下:

from nltk.corpus import PlaintextCorpusReader
corpus_root = 'C:/Users/chaythorn/PycharmProjects/assign2/assign2'
# 显式指定encoding为utf-8,正则匹配补充转义符避免匹配错误
tiny_corp = PlaintextCorpusReader(corpus_root, '.*\.txt', encoding='utf-8')   
test = tiny_corp.sents()
print(test)

如果修改后输出中还有"这类内容,说明你的txt文件本身存储的是经过HTML转义的内容,需要做反转义处理,推荐用更轻便的直接分句方案。

方法2:直接读取文件分句(无需导入语料库)

你不需要强制导入语料库才能用分句功能,直接读取文件内容后调用nltk的sent_tokenize接口,效果和sents()完全一致,还可以灵活做内容预处理:

import html
from nltk.tokenize import sent_tokenize

# 替换为你的目标文件路径
file_path = 'C:/Users/chaythorn/PycharmProjects/assign2/assign2/目标文件名.txt'
with open(file_path, 'r', encoding='utf-8') as f:
    raw_text = f.read()
# 反转义HTML实体,把"等转义内容还原为正常符号
clean_text = html.unescape(raw_text)
# 分句,返回结果格式和sents()一致
sents_result = sent_tokenize(clean_text)
print(sents_result)

额外说明

  • 如果你的UTF-8文件带BOM头,把上述代码的encoding参数改为utf-8-sig即可解决剩余乱码问题。
  • 如果只需要处理单个文件,第二种方法更轻量化,无需绕语料库加载流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:57:02