Раздражающие пространства, которые не исчезнут. Что я должен делать?
В настоящее время я делаю игру с 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