打印完整的 ASCII 艺术

11 投票
8 回答
84335 浏览
提问于 2025-04-18 06:22

我想打印出像这样的ASCII艺术:

print(("""\

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


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

但是输出的结果看起来一点也不对。

那么,打印ASCII艺术的正确方法是什么呢?

8 个回答

2

不需要加 ''.encode('utf-8')

我在Ubuntu机器上用Python 3.6.7经常打印ASCII艺术
__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__)

结果是这样的

Ubuntu-Python3-print(ASCII)

2

我遇到了“...编解码器无法在位置...编码字符'\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 允许你在必要时更改编码
3

在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某些功能没有按照你的预期工作。这种时候,很多人会选择去StackOverflow这个网站寻求帮助。在那里,你可以找到很多其他程序员遇到的类似问题和解决方案。

StackOverflow上有很多人分享他们的经验和解决办法,通常会有详细的解释和代码示例,帮助你更好地理解问题所在。无论你是初学者还是有经验的开发者,那里都有很多有用的信息可以参考。

记得在提问之前,先搜索一下是否有人已经解决了你遇到的问题,这样可以节省时间,也能让你学到更多的知识。

print(r"""\

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


            """)
print(r"""\

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


            """)
22
print(r"""\

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


                """)

在这里,r可以让你更好地打印原始文本,特别是当你要打印的内容中有很多引号的时候。

23

encode这个函数是用来把字符串转换成字节的。但在这里你其实不需要这样做;你只想直接打印出字符串。

print("""\

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


                    """)

如果这样做还是不行,那可能是你的终端没有设置好,不能显示Unicode字符。很遗憾,我对终端的设置不是很了解;你可以看看这个链接:为什么我的终端不能正确输出Unicode字符?,不过我能帮的主要还是Python方面的内容。

撰写回答