2014-02-18 71 views
0

當我運行這個時,我得到以下錯誤:有人知道什麼可能會導致此?這一計劃的目的是從數組python else聲明語法錯誤

文件「words.py」創建一個數組,從數組中刪除所有的標點,並刪除所有小寫字符,37行 其他: ^ 語法錯誤:無效的語法

外殼返回1

import sys 
from scanner import * 
arr=[] 
def main(): 
    print("the name of the program is",sys.argv[0]) 
    for i in range(1,len(sys.argv),1): 
     print(" argument",i,"is", sys.argv[i]) 
    tokens = readTokens("text.txt") 
    cleanTokens = depunctuateTokens(arr) 
    words = decapitalizeTokens(result) 


def readTokens(s): 
    s=Scanner("text.txt") 
    token=s.readtoken() 
    while (token != ""): 
     arr.append(token) 
     token=s.readtoken() 
    s.close() 
    return arr 

def depunctuateTokens(arr): 
    result=[] 
    for i in range(0,len(arr),1): 
     string=arr[i] 
     cleaned="" 
     punctuation="""!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~""" 
     for i in range(0,len(string),1): 
      if string[i] not in punctuation: 
       cleaned += string[i] 
     result.append(cleaned) 
    print(result) 
    return result 


def decapitalizeTokens(result): 
    if (ord(result) <= ord('Z')): 
     return chr(ord(result) + ord('a') - (ord('A')) 
    else: 
     return result 

main() 

回答

1

編輯:

您已經返回resultdepunctuateTokens,所以才這樣做的內部main

cleanTokens = depunctuateTokens(arr) 
words = decapitalizeTokens(cleanTokens) 


你需要一個右括號:

return chr(ord(result) + ord('a') - (ord('A')) 
#          here--^ 

或者,你可以刪除多餘的左括號:

return chr(ord(result) + ord('a') - (ord('A')) 
#        here--^ 

就個人而言,我會推薦以後的解決方案。只有在以下情況下才應使用括號:

  1. 語法要求您。

  2. 它會明顯提高代碼的清晰度。

否則,它們只是多餘的字符。

+0

好的,固定的。現在我收到一個錯誤,說全局名稱結果沒有被定義。有沒有一種方法可以將我從depunctuate函數獲得的結果放入decapitalize函數中? – user3321218

+0

@ user3321218 - 查看我的編輯。 – iCodez

+0

好的謝謝你對初學者有幫助。有沒有一種方法可以映射記號中所有字母的decapitalize函數? – user3321218