如何用Python提取任意文本文档的无重复单词列表?
帮你搞定无重复单词列表的问题!
嘿,作为Python新手遇到这种小问题太正常啦,我来帮你捋捋代码里的问题,再给你修正后的版本~
首先看看你代码里的几个明显问题:
- 列表推导式写错啦:
[word for wordd]这种写法完全不符合Python的语法,你得告诉程序要遍历什么对象来取单词呀 - 没有把读取的文本拆成单词:你只是把整个文本读进来了,但没把它分割成单个的单词,程序根本不知道哪些是“单词”
- 没调用函数:你定义了
MakeWordList函数,但没执行它,所以运行后自然看不到任何效果
基础修正版(快速实现去重)
先给你一个最基础的可运行版本,能实现你要的无重复单词列表:
def MakeWordList(): with open('text.txt', 'r') as f: data = f.read() # 按空白字符(空格、换行等)把文本分割成单词列表 words = data.split() # 用集合自动去重,再转回列表(如果需要列表格式的话) unique_words = list(set(words)) return unique_words # 一定要调用函数才能看到结果哦! result = MakeWordList() print(result)
进阶优化版(保留顺序+处理标点大小写)
上面的版本会打乱单词的原始顺序,而且如果文本里有标点(比如hello,和hello)、大小写差异(Hello和hello),会被当成不同的单词。这个优化版能解决这些问题:
import string def MakeWordList(): with open('text.txt', 'r') as f: data = f.read() # 移除所有标点符号 translator = str.maketrans('', '', string.punctuation) cleaned_text = data.translate(translator) # 转成小写,避免大小写导致的重复 words = cleaned_text.lower().split() # 用字典键的特性保留单词的原始顺序同时去重(Python3.7+可用) unique_words = list(dict.fromkeys(words)) return unique_words result = MakeWordList() print(result)
你可以根据自己的需求选版本,运行前记得确保text.txt和你的Python脚本在同一个文件夹里哦!
内容的提问来源于stack exchange,提问作者James Shockley
相关产品推荐
相关产品推荐

