2014-10-18 64 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