技术求助:无法读取文本文件中的每个单词
解决读取文本文件中每个单词/词语的问题
嘿,我之前处理中文文本的时候也碰到过类似的读取和分词问题,结合你提供的文本内容,给你几个实用的解决方案:
1. 先搞定文件读取的基础问题
很多时候读不出内容或者读出来乱码,都是编码不匹配导致的——中文文件一定要指定正确的编码(比如最常用的utf-8):
with open("你的文本文件名.txt", "r", encoding="utf-8") as file: file_content = file.read()
要是不确定文件编码,可以用chardet库先检测:
import chardet with open("你的文本文件名.txt", "rb") as file: result = chardet.detect(file.read()) print(result['encoding']) # 拿到检测出的编码后,再用它打开文件
2. 提取文本中的单词/词语
你的文本是中文混英文的,要精准提取每个“有效单元”得分情况处理:
情况一:提取中文词语
中文没有天然的空格分隔,得用分词工具,比如国内常用的jieba库:
import jieba # 先按正确编码读取文件内容 with open("你的文本文件名.txt", "r", encoding="utf-8") as file: content = file.read() # 用精准模式分词,得到完整的词语列表 word_list = jieba.lcut(content) # 过滤掉标点、空白字符和无意义的符号 cleaned_words = [word for word in word_list if word.strip() and word.strip() not in "。()[]“”,..."] print(cleaned_words)
运行后会得到类似这样的结果:
['人工神经网络', 'ANNs', '或', '连接主义系统', '是', '受', '构成', '动物大脑', '的', '生物神经网络', '模糊', '启发', '的', '计算系统', '这类', '系统', '通过', '分析', '示例', '来', '学习', '即', '逐步', '提升', '任务', '性能', '通常', '无需', '针对', '特定', '任务', '编程', '例如', '在', '图像识别', '中', '它们', '可', '通过', '分析', '人工', '标记', '为', 'ca', '的', '示例', '图像', '来', '学习', '识别', '包含', '猫', '的', '图像']
情况二:提取英文单词
如果只需要抓文本里的英文单词,用正则表达式就够了:
import re with open("你的文本文件名.txt", "r", encoding="utf-8") as file: content = file.read() # 匹配所有英文单词(包括缩写形式) english_words = re.findall(r'[A-Za-z]+', content) print(english_words) # 输出结果: ['ANNs', 'ca']
3. 常见问题排查
- 要是读取时出现乱码:优先核对文件编码,确保和代码里指定的一致
- 要是分词结果不准:可以给
jieba添加自定义词典,或者切换成jieba.lcut_for_search模式(适合搜索场景的分词) - 要是文本有换行:上面的代码已经自动处理了,
read()会读取整个文件的全部内容
内容的提问来源于stack exchange,提问作者Sourav Sachdeva
相关产品推荐
相关产品推荐

