Раздражающие пространства, которые не исчезнут. Что я должен делать?

В настоящее время я делаю игру с Python.

Я хочу, чтобы код читал:

[00:00:00]   Name|Hello!

Вот мой код:

print(Fore.YELLOW + Style.BRIGHT + '['),
print strftime("%H:%M:%S"),
print ']',
print(Style.BRIGHT + Fore.RED + ' Name'),
print(Fore.BLACK + '|'),
print(Fore.WHITE + Style.DIM + 'Hello!')
time.sleep(5)

Вместо этого - по некоторым причинам - это становится таким:

[ 00:00:00 ]    Name | Hello!

Я понятия не имею, что не так с этим кодом, или как это исправить.

Я был бы очень признателен за любую помощь, которую я могу получить! Спасибо.

2 ответа

Решение

Печать с одного print оператор и запятая всегда печатает завершающий пробел.

Либо используйте один оператор печати со всем соединенным, либо используйте sys.stdout.write() написать в терминал напрямую без лишних пробелов:

print Fore.YELLOW + Style.BRIGHT + '[' + strftime("%H:%M:%S") + ']',

или же

sys.stdout.write(Fore.YELLOW + Style.BRIGHT + '[')
sys.stdout.write(strftime("%H:%M:%S"))
sys.stdout.write(']')

или используйте форматирование строки:

print '{Fore.YELLOW}{Style.BRIGHT}[{time}] {Style.BRIGHT}{Fore.RED} Name {Fore.BLACK}| {Fore.WHITE}{Style.DIM}Hello!'.format(
    Style=Style, Fore=Fore, time=strftime("%H:%M:%S"))

Другой вариант заключается в использовании end="" возможность печати (). Это не печатает перевод строки, а также не добавляет дополнительного места в конце.

print(Style.BRIGHT + Fore.RED + ' Name', end="")
print(Fore.BLACK + '|', end="")
print(Fore.WHITE + Style.DIM + 'Hello!')

Предостережение в том, что end опция доступна только в Python 3. Она также доступна в Python 2.6, если вы from __future__ import print_function

Другие вопросы по тегам