Печать полного ascii-арта

Я пытаюсь напечатать ascii-арт следующим образом:

print(("""\

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


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

И вывод вообще не выглядит правильным.

Каков правильный метод печати ascii-арта?


person user3476998    schedule 13.05.2014    source источник
comment
Использовать символы перевода строки? \n   -  person PurkkaKoodari    schedule 13.05.2014
comment
Какая это версия Python?   -  person user2357112 supports Monica    schedule 13.05.2014
comment
Я использую Python 3.4.   -  person user3476998    schedule 13.05.2014
comment
Как выглядит результат?   -  person Rob Watts    schedule 13.05.2014
comment
Используйте арт PyPi python ASCII — ссылка ‹a href=pypi.org/project/art/› здесь‹/а›. (У вас недостаточно репутации, чтобы комментировать, если вы не отвечаете.)   -  person Reinstate C0MMUNiSM    schedule 09.12.2019


Ответы (5)


encode берет строку и кодирует ее в байты. Это не то, что вы хотите здесь; вы хотите просто напечатать строку напрямую:

print("""\

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


                    """)

Если это не сработает, ваш терминал, скорее всего, не настроен для отображения Unicode. К сожалению, я не особо разбираюсь в настройке терминала; Почему мой терминал неправильно выводит символы Юникода? может быть актуальным, но моя способность помочь в основном ограничивается тем, что касается Python.

person user2357112 supports Monica    schedule 13.05.2014
comment
@frostnational: я попробовал, и, похоже, все работает отлично. - person user2357112 supports Monica; 13.05.2014
comment
Я получаю... кодек не может кодировать символ '\ u0ca0' в позиции... - person user3476998; 13.05.2014
comment
@frostnational Не поврежден, просто ваша IDE не может напечатать эти символы. Вывод, вы не можете использовать их для ascii искусства! - person aIKid; 13.05.2014

print(r"""\

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


                """)

r позволяет лучше печатать необработанный текст, особенно когда на изображении, которое вы пытаетесь напечатать, много кавычек.

person Samantha Penningtoon    schedule 07.03.2018
comment
Я рекомендую, чтобы это был принятый ответ. - person Lutz Büch; 28.06.2021

Я получаю "...кодек не может кодировать символ 'ಠ' в позиции..."

Если 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 позволяет изменить кодировку при необходимости
person jfs    schedule 13.05.2014

Не нужно добавлять ''.encode('utf-8')

I print ASCCII art all the time using Python 3.6.7 on Ubuntu machines
__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)

person Nathan Smiechowski    schedule 13.06.2019

печать (г\

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


            """)

это напечатает или напечатает это в необработанном тексте

person Jacob OBrien    schedule 21.06.2021