2014-10-18 87 views
0

不知何故without_E函数不起作用。我收到了整个名单。但我只希望检测字母'e'。此外,当我打印清单时,我收到的形式是[words],而不是"words"。这是正常的行为吗?这些功能正在从wordlist文件中读取。Python条件中的函数without_E无法正常工作

# 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
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()会遍历每当前行的每一个字,然后我们检查,如果e有在word的小写版本。

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