某种程度上without_E
功能不起作用。我得到了整个清单。但是我只希望用字母'e'
来检测单词。此外,当我打印列表时,我会以[words]
而不是"words"
的形式获得这些字词。这是正常的行为吗?这些函数正在从wordlist
文件中读取。
# Display words without letter "e"
def without_E(word):
for ch in word:
if ch == 'e' or ch == 'E':
print "here" * 5
return False
return True
def percentage_words():
i = 0
j = 0
fin = open("wordlist")
for line in fin:
i += 1
word = line.split()
if without_E(word):
j += 1
# print word
percentage = (j * 100) / i
print percentage
def main():
# word_list()
# long_words20()
# without_E()
percentage_words()
if __name__ == "__main__":
main()
答案 0 :(得分:0)
首先,您需要更新文件对象,这样,如果您的文件中只有单词,请fin = open("wordlist")
更改为fin = open("wordlist").readlines()
。但是,如果您的文件中有行,则需要split
您的行,然后检查:
def percentage_words():
i = 0
j = 0
fin = open("wordlist").readlines()
for line in fin:
for word in line.split():
i += 1
word = line.split()
if without_E(word):
j += 1
您可以使用without_E(word)
操作来代替for
函数和in
循环:
def without_E(word):
if 'e' in word or 'E' in word:
print "here" * 5
return False
return True
答案 1 :(得分:0)
word = line.split()
这一行会将该行中的所有单词作为字符串列表给出,并将其传递给without_E
。因此,您实际上是在检查单个字词是e
还是E
。而不是那样,你可以做这样的事情
i, j = 0, 0
with open("wordlist") as fin:
for line in fin:
i += 1
for word in line.split():
if "e" not in word.lower():
j += 1
现在,for word in line.split()
将遍历当前行中的每个单词,然后我们会检查{{1}中的e
是否而不是 }}