打印完整的 ascii 艺术
Posted
技术标签:
【中文标题】打印完整的 ascii 艺术【英文标题】:Print full ascii art 【发布时间】:2014-06-30 15:46:17 【问题描述】:我正在尝试像这样打印 ascii 艺术:
print(("""\
._ o o
\_`-)|_
,"" \
," ## | ಠ ಠ.
," ## ,-\__ `.
," / `--._;)
," ## /
," ## /
""").encode('utf-8'))
而且输出看起来完全不正确。
打印ascii艺术的正确方法是什么?
【问题讨论】:
使用换行符?\n
这是什么 Python 版本?
我使用的是 Python 3.4。
输出是什么样子的?
使用 PyPi 的 python ASCII 艺术 - 链接 pypi.org/project/art/">here</a>。(没有足够的声誉来评论,除非回复。)
【参考方案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 方面。
【讨论】:
@frostnational: I've tried it, and it seems to work just fine. 我得到“...编解码器无法在位置编码字符'\u0ca0'...” @frostnational 没有损坏,只是您的 IDE 无法打印这些字符。结论,您不能将它们用于 ascii 艺术!以上是关于打印完整的 ascii 艺术的主要内容,如果未能解决你的问题,请参考以下文章