SyntaxError:扫描字符串文字时的EOL:TOTEM

时间:2014-09-10 20:22:00

标签: python

我们必须使用由13个字符宽组成的字符串来创建图腾柱。每个头必须具有不同的特征。我的一些特征功能如下。但是,当我运行我的代码时,它给了我上面的语法错误。

import random

def hair_spiky():
        return"/\/\/\/\/\/\/"

def hair_middlepart():
        return"\\\\\\ //////"

def eye_crossed():
        a1= r" ____   ____"
        a2= r"/    \ /    \"
        a3= r"|   O| |O   |"
        a4= r"\____/ \____/"
        return a1 +"\n" + a2 + "\n" + a3 + "\n" a4
    def eye_left():
        a1=r" ____   ____"
        a2=r"/    \ /    \"
        a3=r"|O   | |O   |"
        a4=r"\____/ \____/"

2 个答案:

答案 0 :(得分:1)

您无法使用\作为raw string literal中的最后一个字符:

  

r"\"不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。

不要在那里使用原始字符串;只需加倍反斜杠:

a2= "/    \\ /    \\"

或使用三重引号使用原始多行字符串:

def eye_crossed():
    return r"""
 ____   ____
/    \ /    \
|   O| |O   |
\____/ \____/"""[1:]

def eye_left():
    return r"""
 ____   ____
/    \ /    \
|O   | |O   |
\____/ \____/"""[1:]

切片用于删除作为字符串一部分的初始换行符。

答案 1 :(得分:0)

这是原始字符串的奇怪怪癖,并通过语法突出显示区别来表示,请参阅lexical analysis

  

即使在原始字符串中,字符串引号也可以使用反斜杠进行转义,但反斜杠仍保留在字符串中;例如,r" \""是一个有效的字符串文字,由两个字符组成:反斜杠和双引号; R" \"不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾

要修复它,请使用普通字符串和/或连接:

 "/    \\ /    \\"
r"/    \ /    " + '\\'