【问题标题】:Print full ascii art打印完整的 ascii 艺术
【发布时间】:2023-03-14 00:45:01
【问题描述】:

我正在尝试像这样打印 ascii 艺术:

print(("""\

                                       ._ o o
                                       \_`-)|_
                                    ,""       \ 
                                  ,"  ## |   ಠ ಠ. 
                                ," ##   ,-\__    `.
                              ,"       /     `--._;)
                            ,"     ## /
                          ,"   ##    /


                    """).encode('utf-8'))

而且输出看起来完全不正确。

打印ascii艺术的正确方法是什么?

【问题讨论】:

  • 使用换行符? \n
  • 这是什么 Python 版本?
  • 我使用的是 Python 3.4。
  • 输出是什么样子的?
  • 使用 PyPi 的 python ASCII 艺术 - 链接 pypi.org/project/art/">here</a>。(没有足够的声誉来评论,除非回复。)

标签: python python-3.x printing utf-8 ascii


【解决方案1】:
print(r"""\

                               ._ o o
                               \_`-)|_
                            ,""       \ 
                          ,"  ## |   ಠ ಠ. 
                        ," ##   ,-\__    `.
                      ,"       /     `--._;)
                    ,"     ## /
                  ,"   ##    /


            """)

这将以原始文本输入或打印出来

【讨论】:

    【解决方案2】:
    print(r"""\
    
                                   ._ o o
                                   \_`-)|_
                                ,""       \ 
                              ,"  ## |   ಠ ಠ. 
                            ," ##   ,-\__    `.
                          ,"       /     `--._;)
                        ,"     ## /
                      ,"   ##    /
    
    
                """)
    print(r"""\
    
                                   ._ o o
                                   \_`-)|_
                                ,""       \ 
                              ,"  ## |   ಠ ಠ. 
                            ," ##   ,-\__    `.
                          ,"       /     `--._;)
                        ,"     ## /
                      ,"   ##    /
    
    
                """)
    

    【讨论】:

      【解决方案3】:

      不用加''.encode('utf-8')

      我一直在 Ubuntu 机器上使用 Python 3.6.7 打印 ASCCII 艺术作品
      __header__ = '''Content-Type: application/xml
      
      \033[92m        .---------------------------------.
      \033[92m        |  .---------------------------.  |
      \033[92m        |[]|\033[94m         __   __   *       \033[92m|[]|
      \033[92m        |  |\033[94m        /  | /  | /        \033[92m|  |
      \033[92m        |  |\033[94m       (___|(___|(         \033[92m|  |
      \033[92m        |  |\033[94m       |   )|    |         \033[92m|  |
      \033[92m        |  |\033[94m       |  / |    |         \033[92m|  |
      \033[92m        |  |\033[94m /              |         |\033[92m|  |
      \033[92m        |  |\033[94m(  ___  ___  ___| ___  ___|\033[92m|  |
      \033[92m        |  |\033[94m| |   )|   )|   )|___)|   )\033[92m|  |
      \033[92m        |  |\033[94m| |__/ |__/||__/ |__  |__/ \033[92m|  |
      ..And more
      

      那么

      print(__header__)
      

      结果

      【讨论】:

        【解决方案4】:
        print(r"""\
        
                                           ._ o o
                                           \_`-)|_
                                        ,""       \ 
                                      ,"  ## |   ಠ ಠ. 
                                    ," ##   ,-\__    `.
                                  ,"       /     `--._;)
                                ,"     ## /
                              ,"   ##    /
        
        
                        """)
        

        r 可以让您更好地打印原始文本,尤其是当您尝试打印的图片中有很多引号时。

        【讨论】:

        • 我建议这是公认的答案。
        【解决方案5】:

        我得到“......编解码器无法在位置编码字符'\u0ca0'......”

        如果 print(giraffe) 由于不正确的字符编码而失败,请尝试正确设置 PYTHONIOENCODING 环境变量,例如在 bash 中:

        $ PYTHONIOENCODING=utf-8 python3 -c 'from text_art import giraffe as s; print(s)'
        

        不要使用print(giraffe.encode('utf-8')):

        • print() 函数需要文本,而不是字节(无关:要打印字节,您可以使用 sys.stdout.buffer.write(some_bytes)
        • 如何将字节解释为文本是终端的属性,您不应在代码中对其设置进行硬编码。 PYTHONIOENCODING 允许您在必要时更改编码

        【讨论】:

          【解决方案6】:

          encode 接受一个字符串并将其编码为字节。这不是你想要的。您只想直接打印字符串:

          print("""\
          
                                                 ._ o o
                                                 \_`-)|_
                                              ,""       \ 
                                            ,"  ## |   ಠ ಠ. 
                                          ," ##   ,-\__    `.
                                        ,"       /     `--._;)
                                      ,"     ## /
                                    ,"   ##    /
          
          
                              """)
          

          如果这不起作用,您的终端很可能未配置为显示 Unicode。不幸的是,我对终端配置不是特别了解; Why doesn't my terminal output unicode characters properly? 可能是相关的,但我的帮助能力主要限于 Python 方面。

          【讨论】:

          • 我得到“...编解码器无法在位置编码字符'\u0ca0'...”
          • @frostnational 没有损坏,只是您的 IDE 无法打印这些字符。结论,您不能将它们用于 ascii 艺术!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-27
          • 1970-01-01
          • 2011-01-11
          相关资源
          最近更新 更多