Spyder中长文本文件读取失败:是软件问题还是代码问题?
解决UnicodeDecodeError:文件编码不匹配问题
别担心,这个问题跟Spyder没啥关系,纯粹是文件编码不匹配导致的——咱们一步步来解决:
问题根源
你打开文件时没指定编码,Python默认用了Windows系统的cp1252编码去解码,但你的wiki-100k.txt应该是用utf-8编码保存的(毕竟包含50万字符的英文词库,大概率是utf-8格式)。当文件里出现cp1252不认识的字节(比如某些特殊符号、带重音的英文变体字符),就会触发这个解码错误。
修复代码
只需要在open()函数里明确指定编码为utf-8就行,修改后的代码如下:
with open("wiki-100k.txt", encoding="utf-8") as word_file: english_words = set(word.strip().lower() for word in word_file) def IsWord(word): return word.lower() in english_words print(IsWord("HaMs"))
验证Spyder是否有问题(可选)
如果你还是怀疑Spyder的问题,可以把脚本复制到命令行里直接运行:
- 打开cmd/PowerShell,切换到脚本所在的
C:\Users\eirta\Desktop\Ciphers目录 - 运行
python Keypad.py
如果同样报错,那肯定是编码问题;如果命令行能正常运行,再去检查Spyder的环境编码设置(不过这种情况极少)。
补充说明
你的词库有10万单词,用生成器表达式构建集合的写法是高效的,没问题——编码问题解决后,这个代码应该能快速加载完词库,测试IsWord("HaMs")会返回True,因为已经把所有单词转成小写存入集合了。
内容的提问来源于stack exchange,提问作者user13575423
相关产品推荐
相关产品推荐

