#python-3.x #for-loop
#python-3.x #for-цикл
Вопрос:
Я пытаюсь выровнять свой печатный текст по правому краю с помощью интервала табуляции между двумя сгенерированными столбцами.
di = {"name": "John", "Job": "Scientist", "Age": "N/A", "OS": "Mac"}
di = di.items()
for (keys, values) in di:
print(keys, "t", values)
Однако я получаю нижеприведенный вывод на печать.
name John
Job Scientist
Age N/A
OS Mac
Я заменил инструкцию print на print(f"{keys}{values:>15}")
, но на самом деле это не помогает, и я получаю следующую печать.
name John
Job Scientist
Age N/A
OS Mac
Я пытаюсь понять это:
name John
Job Scientist
Age N/A
OS Mac
Есть какие-нибудь предложения?
РЕДАКТИРОВАТЬ: в идеале я бы хотел, чтобы это работало при распечатке в PyCharm или sublime text при вводе команды печати.
Комментарии:
1. Обратите внимание, что входные данные правильно выровнены на моем терминале. Это зависит от ширины табуляции. Использование очень длинного ключа, например,
firstname
должно надежно вызвать проблему.
Ответ №1:
Чтобы указать выравнивание печатного вывода, используйте возможность форматирования строки f, как указано в моем решении, конструкция форматирования {variable:<} предписывает печати выровнять выходную строку по левому краю. Для получения дополнительной информации и довольно хорошего руководства см. f-Strings Python 3: улучшенный синтаксис форматирования строк (Руководство) и, конечно, документ python, посвященный теме форматированных строковых литералов.
di = {"name": "John", "Job": "Scientist", "Age": "N/A", "OS": "Mac"}
for key, value in di.items():
print(f'{key:<}t{value:<}')
Комментарии:
1. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки
2. @NicoHaase, я отредактировал свой ответ, чтобы добавить некоторые пояснения.
3. Это работает в распечатке терминала, но не работает в распечатке PyCharm или распечатке sublime text. У них все еще есть проблемы с отступами.
4. Строки всегда выравниваются сами по себе. Выравнивание бессмысленно без установки минимального размера подстановки.