打印完整的 ASCII 艺术作品

问题描述 投票:0回答:8

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

print(("""\

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


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

输出看起来根本不正确。

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

python python-3.x printing utf-8 ascii
8个回答
22
投票

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

print("""\

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


                    """)

如果这不起作用,您的终端很可能未配置为显示 Unicode。不幸的是,我对终端配置不是特别了解; 为什么我的终端不能正确输出 unicode 字符? 可能相关,但我的帮助能力主要限于 Python 方面。


21
投票
print(r"""\

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


                """)

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


3
投票
print(r"""\

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


            """)
print(r"""\

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


            """)

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
    允许您根据需要更改编码

2
投票

无需添加
''.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__)

结果


1
投票
print(r"""\

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


            """)

这将以原始文本输入或打印此内容


0
投票

为了解决这个问题,我只是在文件的顶层添加了标头“#coding=utf-8”,它就可以工作了。 Code

Result of the script


0
投票

在Python 3.12.0中

print(r""" """) 或 print(r''' ''') 打印 ASCII 艺术没有任何错误。

而 print(r"""\ """) 或 print(r'''\ ''') 打印反斜杠() 以及 ASCII 艺术。

© www.soinside.com 2019 - 2024. All rights reserved.