Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阅读检查。写破损的Python脚本_Python - Fatal编程技术网

阅读检查。写破损的Python脚本

阅读检查。写破损的Python脚本,python,Python,我正在开发一个文字游戏,对于这个游戏,我需要一个单词列表。遗憾的是,这个列表太长了,我不得不对它进行细化(这个单词列表可以在任何Mac上找到,网址是/usr/share/dict/) 为了改进它,我决定使用我自己的Python脚本。我之前已经写过一个脚本,删除了所有以大写字母开头的单词(因此删除了地名等),而且效果很好。就是这样: with open("/Users/me/Desktop/oldwords.txt", "r") as text: with open("/Users/me/

我正在开发一个文字游戏,对于这个游戏,我需要一个单词列表。遗憾的是,这个列表太长了,我不得不对它进行细化(这个单词列表可以在任何Mac上找到,网址是/usr/share/dict/

为了改进它,我决定使用我自己的Python脚本。我之前已经写过一个脚本,删除了所有以大写字母开头的单词(因此删除了地名等),而且效果很好。就是这样:

with open("/Users/me/Desktop/oldwords.txt", "r") as text:
    with open("/Users/me/Desktop/newwords.txt", "w") as towriteto:
        for word in text:
            if word[0]==word[0].lower():
                towriteto.write(word)
然后,我决定进一步完善它;我决定删除pyenchant模块英语词典中没有的所有单词。此操作的代码与前一个操作的代码非常相似。这是我的代码:

import enchant
with open("/Users/me/Desktop/newwords.txt", "r") as text:
    with open("/Users/me/Desktop/words.txt", "w") as towriteto:
        d = enchant.Dict("en_US")
        for word in text:
            if d.check(word):
                towriteto.write(word)
遗憾的是,它没有向“towriteto”文件写入任何内容,经过一些调试后,我发现

d.check(word) -> False
它总是返回false。然而,当我分别检查单词时,真实的单词返回True,而虚假的单词返回False

我不知道我的第二个剧本出了什么问题。文件位置正确,pyenchant安装没有问题


提前谢谢

我不知道输入文件的格式,但如果每行只有一个单词,请在调用
d.check(word)
之前尝试删除
word
的行尾字符:


文件看起来像什么?是每行一个单词?还是仅仅
strip()
但是是+1。。。你打败了我:P@user76691让我们以单词
“hello\n”
为例。如果我的假设是正确的,那么在第一个脚本中,您只测试
“h”==“h.lower()
,这是
真的
,因此单词被写在
中。在第二个脚本中,您测试
d.check(“hello\n”)
,它可能返回
False
,因为字典必须包含
“hello”
,但不包含
“hello\n”
,因此单词没有写入
到WriteTo
。这总是会引发错误:*(进程:3135):CRITICAL**:enchant\u dict\u check:assertion`len'回溯失败(最近一次调用):文件“”,第4行,在文件“/Library/Python/2.7/site packages/enchant/\uuuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuenchant.errors.Error:Unspecified Error您是否也尝试打印单词查看问题所在?@clemtoy无法打印任何内容,因为错误在第一个单词处被捕获。我相信这与rstrip()函数有关。遗憾的是,我没有从错误中获得太多信息,所以我真的迷路了。
word = word.rstrip()