【问题标题】:EOL whilst scanning string literal - PythonEOL 同时扫描字符串文字 - Python
【发布时间】:2013-09-07 10:06:29
【问题描述】:

我是 Python 新手。我正在尝试编写代码,以便打印出这个 ASCII 艺术交通信号灯,这是实际的 ASCII

  ##
                  _[]_
                 [____]
             .----'  '----.
         .===|    .==.    |===.
         \   |   /####\   |   /
         /   |   \####/   |   \
         '===|    `""`    |==='
         .===|    .==.    |===.
         \   |   /::::\   |   /
         /   |   \::::/   |   \
         '===|    `""`    |==='
         .===|    .==.    |===.
         \   |   /&&&&\   |   /
         /   |   \&&&&/   |   \
         '===|    `""`    |==='
      jgs    '--.______.--'

我尝试使用的代码是这样的

print ("##"),
print (" _[]_"),
print (".----'  '----."),
print (" .===|    .==.    |===."),
print (" \   |   /####\   |   /"),
print (" /   |   \####/   |   \\"),
print ("'===|    `""`    |==='"),
print (" .===|    .==.    |===."),
print ("\   |   /::::\   |   /"),
print (" /   |   \::::/   |   \"),
print ("'===|    `""`    |==='"),
print (".===|    .==.    |===."),
print (" \   |   /&&&&\   |   /"),
print (" /   |   \&&&&/   |   \"),
print (" '===|    `""`    |==='"),
print ("'--.______.--'")

【问题讨论】:

    标签: python python-3.3 eol


    【解决方案1】:

    您需要转义 \ 字符,将它们加倍:

    print (" /   |   \::::/   |   \"),
    

    应该是:

    print(" /   |   \\::::/   |   \\")
    

    你也想去掉所有的逗号。

    请注意,您可以使用三引号创建多行字符串;将其设为原始字符串(使用r''),您也不必转义任何内容:

    print(r'''              _[]_
                 [____]
             .----'  '----.
         .===|    .==.    |===.
         \   |   /####\   |   /
         /   |   \####/   |   \
         '===|    `""`    |==='
         .===|    .==.    |===.
         \   |   /::::\   |   /
         /   |   \::::/   |   \
         '===|    `""`    |==='
         .===|    .==.    |===.
         \   |   /&&&&\   |   /
         /   |   \&&&&/   |   \
         '===|    `""`    |==='
      jgs    '--.______.--'
    ''')
    

    【讨论】:

    • +1。我发现问题的格式也显示答案很有趣:)
    • @Leonid:编辑不正确; r'''\ 开头行在原始多行字符串中不起作用。输出中将包含文字反斜杠。
    • 我还是不明白:/
    • @user2756717:你不明白哪一部分?您可以通过将所有 \ 字符替换为 \\ 双斜杠来解决您的直接问题。
    • @user2756717:详细解释可以在string literal documentation找到。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多