Python 找不到语法错误

Python 找不到语法错误,python,string,syntax,Python,String,Syntax,我在“被*”包围的地方遇到语法错误。错误的行是“\n*”*+strkeys[1]。大写+“|”+strvalues[1] 当然,这是一个语法错误后,你得到了一个+ “\n*”*+strkeys[1]。大写+“|”+strvalues[1] 应该不会* “\n*”+strkeys[1]。将+“|”+strvalues[1]大写。与其找到此错误,不如将其重写得干净一点 msg = ('Here is your breakdown of your most used words: \n\n'

我在“被*”包围的地方遇到语法错误。

错误的行是“\n*”*+strkeys[1]。大写+“|”+strvalues[1]

当然,这是一个语法错误后,你得到了一个+

“\n*”*+strkeys[1]。大写+“|”+strvalues[1]

应该不会*


“\n*”+strkeys[1]。将+“|”+strvalues[1]大写。

与其找到此错误,不如将其重写得干净一点

msg = ('Here is your breakdown of your most used words: \n\n'
           'Word | Times Used'
           '\n:--:|:--:'
           '\n' + str(keys[0]).capitalize() + '|' + str(values[0])
           '\n*'* + str(keys[1]).capitalize() + '|' + str(values[1])
           '\n' + str(keys[2]).capitalize() + '|' + str(values[2])
           '\n' + str(keys[3]).capitalize() + '|' + str(values[3])
           '\n' + str(keys[4]).capitalize() + '|' + str(values[4])
           '\n' + str(keys[5]).capitalize() + '|' + str(values[5])
           '\n' + str(keys[6]).capitalize() + '|' + str(values[6])
           '\n' + str(keys[7]).capitalize() + '|' + str(values[7])
           '\n' + str(keys[8]).capitalize() + '|' + str(values[8])
           '\n' + str(keys[9]).capitalize() + '|' + str(values[9]))

在python中,需要使用反斜杠¥转义每一行,并且需要使用+运算符连接每一个字符串

女巫就像跟随者一样

msg = """Here is your breakdown of your most used words:
         Word | Times Used
         :--:|:--:"""

for k,v in somedict:
    msg += "\n{}|{}".format(k.capitalize(),v)

print(msg)

这是极少数情况之一,SyntaxError几乎与编译器所说的完全相同:

str = "abc" ¥
      + "def" ¥
      + "ghi"
到这里为止你都很好。如果在这里关闭括号并删除其余部分,这将解析

问题是在此之后,您有另一个字符串文本:'\n'+。。。。您可以有两个相邻的字符串文本,而不会出现问题。Python将它们视为单个字符串,但在此阶段,Python会看到:

msg = ('Here is your breakdown of your most used words: \n\n'
           'Word | Times Used'
           '\n:--:|:--:'
           '\n' + str(keys[0]).capitalize() + '|' + str(values[0])
这总是一个语法错误。在这两者之间需要一个运算符,很可能是+。相邻字符串的技巧仅适用于文本。例如,您可以执行以下操作:

str(values([0])) '\n'
但不是:

>>> 'fred' 'flintstone'
'fredflintstone'

错误消息是什么?您的程序中有一个错误:无效语法。那么什么是msg?一个长字符串,或两个字符串的元组?。请看前两个字符串。要么你缺少逗号,要么你缺少一个加号。我忘记了行末的加号了!非常感谢。@rajpy第四行实际上是第一行需要a+。相邻的字符串文本被解析为单个字符串。不,这只是为了显示错误在哪里。永远不要相信编译器知道错误在哪里。它只能告诉你在解析你的程序时它在哪里被弄糊涂了,而不是你在哪里真正犯了错误。实际误差通常在这之前。在本例中,字符串彼此相邻,没有用+连接它们,也没有用a使它们成为元组。如何修复取决于您想要什么。@LeeDanielCrocker:这不需要修复,尽管在这种情况下,如果采用不同的方法,可读性会更好,但这是Python从C语言中获得的一个功能—这些字符串文本在编译时会自动连接起来。例如“foo”“bar”==“foobar”。问题是,正如lvc所指出的,当字符串非文本紧挨着字符串文本,并且没有运算符连接它们时,这两个计数都为False。您不需要显式地连接问题中由或[]或{}包围的行;Python将它们之间的任何内容解析为一条长线。您也不需要显式连接字符串文本-接下来的两个仅由空格分隔的字符串被解析为单个字符串。对不起,我对语法有误解。谢谢你的建议。
>>> x = 'fred'
>>> x 'flintstone'
  File "<stdin>", line 1
    x 'flintstone'
                 ^
SyntaxError: invalid syntax