【问题标题】:python else statement syntax errorpython else语句语法错误
【发布时间】:2014-02-18 00:01:07
【问题描述】:

当我运行此程序时,我收到以下错误:有人知道可能导致此问题的原因吗?该程序的目的是创建一个数组,从数组中删除所有标点符号,并从数组中删除所有小写字符

文件“words.py”,第 37 行 别的: ^ SyntaxError: 无效语法

shell 返回 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="""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
        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()

【问题讨论】:

    标签: python if-statement


    【解决方案1】:

    编辑:

    您已经从depunctuateTokens 返回result,所以只需在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. 它将显着提高代码的清晰度。

    否则,它们只是多余的字符。

    【讨论】:

    • 好的,解决了这个问题。现在我收到一条错误消息,提示未定义全局名称结果。有没有办法可以将 depunctuate 函数得到的结果放入 decapitalize 函数中?
    • 好的,感谢您对初学者如此有帮助。有没有办法可以将 decapitalize 函数映射到令牌中的所有字母?
    • @user3321218 - 我不太明白你的意思......但我确信这是可能的。您应该提出一个新问题来专门处理该主题(毕竟,this 问题是关于SyntaxError)。这样做会让你得到最好的帮助。在解释你的问题时不要忘记说清楚。
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多