В этой статье мы рассмотрим, как напечатать табуляцию, т.е. вывести на экран табы (или пробелы) в виде отступов между частями строки.
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.
Содержание
- Как напечатать табуляцию в Python
- Печать табуляции при форматировании строки
- Вывод табуляции при форматировании строки с помощью str.format()
- Печать табуляции с помощью оператора сложения (+)
- Объединение списка строк с помощью табуляции как разделителя
- Получение строки длиной N с выравниванием по левому краю
- Вставка табуляции в существующую строку на определенную позицию
- Запись в файл значений, разделенных табами
- Как печатать пробелы в Python
Как напечатать табуляцию в Python
Для вывода табуляции используется символ \t
. Например, print('bobby\thadz')
. Символ \t
внутри строки является управляющей последовательностью для символа табуляции.
string = 'bobby\thadz' print(string) # 👉️ bobby hadz print(repr('\t')) # 👉️ '\t' tab = '\t' string = f'bobby{tab}hadz' print(string) # 👉️ bobby hadz first = 'bobby' last = 'hadz' print(first + '\t' + last) # 👉️ bobby hadz print('a', 'b', 'c', sep='\t') # 👉️ 'a b c'
Если вам нужно просто напечатать табуляцию, используйте символ \t
в строке.
string = 'bobby\thadz' print(string) # 👉️ bobby hadz
Если вам нужно напечатать саму управляющую последовательность для символа табуляции, передайте строку функции repr()
.
print(repr('\t')) # 👉️ '\t'
Печать табуляции при форматировании строки
Для добавления табуляции при форматировании строки используйте f-строки.
От редакции Pythonist: подробнее о форматировании читайте в статье «Форматирование строк в Python: format() и f-строки».
tab = '\t' string = f'bobby{tab}hadz' print(string) # 👉️ bobby hadz
Обратите внимание, что мы сохранили символ \t
в переменной. Это связано с тем, что f-строки не могут содержать символы обратной косой черты в выражениях.
f-строки позволяют нам включать выражения внутрь строки, предваряя строку символом f
.
tab = '\t' first = 'bobby' last = 'hadz' string = f'{first}{tab}{last}' print(string) # 👉️ bobby hadz
Обязательно заключайте выражения в фигурные скобки — {expression}
.
Обратную косую черту нельзя использовать в выражениях, но между ними можно.
first = 'bobby' last = 'hadz' salary = 50 string = f"{first}\t{last}\t{salary}" print(string) # 👉️ bobby hadz 50
Вывод табуляции при форматировании строки с помощью str.format()
В качестве альтернативы можно использовать метод str.format()
. Он выполняет операции форматирования строк.
first = 'bobby' last = 'hadz' string = '{}\t{}'.format(first, last) print(string) # 👉️ bobby hadz
Строка, для которой вызывается метод, может содержать поля-плейсхолдеры, указанные с помощью фигурных скобок {}
.
Печать табуляции с помощью оператора сложения
Также для форматирования строк с табуляцией можно применять оператор сложения (+).
first = 'bobby' last = 'hadz' age = 30 # 👇️ bobby hadz 30 print(first + '\t' + last + '\t' + str(age))
Оператор сложения используется для конкатенации строк.
Однако необходимо убедиться, что значения с левой и правой стороны оператора имеют тип string. Если у вас есть значения другого типа, используйте класс str()
, чтобы преобразовать их в строки.
Если вам при печати нужно разделить несколько значений табуляцией, используйте аргумент sep
функции print()
.
print('a', 'b', 'c', sep='\t') # 👉️ 'a b c'
Аргумент sep
— это разделитель между аргументами, которые мы передаем в функцию print()
.
print('bobby', 'hadz', sep='') # 👉️ bobbyhadz print('bobby', 'hadz') # 👉️ bobby hadz
По умолчанию в качестве разделителя используется пробел.
Объединение списка строк с табуляцией в качестве разделителя
Для объединения нескольких строк с табуляцией в качестве разделителя можно использовать метод str.join()
.
От редакции Pythonist: подробнее об объединении и разделении строк читайте в статье «Строковые методы split() и join() в Python».
a_list = ['bobby', 'hadz', 'com'] result = '\t'.join(a_list) print(result) # 👉️ bobby hadz com
Этот метод принимает в качестве аргумента итерируемый объект (список) и возвращает строку, которая является конкатенацией строк в списке.
Обратите внимание, что метод выдает ошибку типа TypeError, если в итерируемом объекте есть значения, не являющиеся строками.
Если итерируемый объект содержит числа или данные других типов, преобразуйте их все в строки перед вызовом join()
.
a_list = ['bobby', 1, 'hadz', 2, 'com'] result = '\t'.join(str(item) for item in a_list) print(result) # 👉️ bobby 1 hadz 2 com
Как разделитель между элементами используется строка, на которой вызывается метод.
В качестве альтернативы можно обращаться к каждому элементу списка по индексу и использовать оператор сложения.
a_list = ['bobby', 1, 'hadz'] result = a_list[0] + '\t' + str(a_list[1]) + '\t' + a_list[2] print(result) # 👉️ bobby 1 hadz
Обратите внимание, что чтобы использовать оператор сложения, нам пришлось при помощи str()
преобразовать целочисленное значение в строку.
Индексация в Python начинается с нуля, поэтому первый элемент списка имеет индекс 0, а последний элемент — -1 или len(my_list) - 1
.
Получение строки с длиной N и выравниванием по левому краю
Если вам нужно вернуть выровненную по левому краю строку определенной длины, воспользуйтесь методом str.ljust()
.
my_list = ['ab', 'abcd', 'abcdefg'] for item in my_list: print(f'{item.ljust(10)} another') # ab another # abcd another # abcdefg another
Метод str.ljust
выравнивает конец строки до указанной ширины с помощью символа заполнения.
Этот метод принимает два аргумента: width
(общая длина вставляемой строки) и fillchar
(символ, которым нужно заполнить строку).
Если символ заполнения не указан, строка заполняется пробелами.
Вставка табуляции в существующую строку по определенному индексу
Если вам нужно вставить табуляцию на определенную позицию существующей строки, используйте срезы строк.
string = 'bobbyhadz' new_string = string[:5] + '\t' + string[5:] print(new_string) # 👉️ bobby hadz
Синтаксис для нарезки строк таков: my_str[start:stop:step]
.
Индекс start
является инклюзивным, а индекс stop
— эксклюзивным (до, но не включая).
Помним, что индексация начинается с нуля, поэтому первый символ в строке имеет индекс 0, а последний — -1 или len(my_str) - 1
.
Срез string[:5]
начинается с индекса 0 и идет до индекса 5, но не включает его.
Срез string[5:]
начинается с индекса 5 и идет до конца строки.
Запись в файл значений, разделенных символами табуляции
Чтобы записать значения, разделенные табуляцией, в файл, выполните следующие действия:
- Откройте файл в режиме записи.
- Используйте символ
\t
, чтобы вставить табуляцию в строку. - Используйте метод
file.write()
, чтобы записать строку в файл.
# ✅ write strings separated by tabs to file with open('example.txt', 'w', encoding='utf-8') as my_file: my_file.write('bobby' + '\t' + 'hadz' + '\n') my_file.write('first\tsecond') # ✅ separate the items of a list by tabs and write the result to a file with open('example.txt', 'w', encoding='utf-8') as my_file: my_list = ['bobby', 'hadz', 'com'] my_file.write('\t'.join(my_list) + '\n')
Для открытия файла в режиме записи мы использовали оператор with. Он позаботится об автоматическом закрытии файла.
От редакции Pythonist: подробнее о работе с файлами читайте в статье «Чтение и запись файлов в Python».
Если вам нужно просто вставить табуляцию в строку, используйте символ \t
.
with open('example.txt', 'w', encoding='utf-8') as my_file: my_file.write('bobby' + '\t' + 'hadz' + '\n') my_file.write('first\tsecond')
Содержимое файла example.txt выглядит следующим образом:
bobby hadz first second
Чтобы убедиться, что файл содержит табуляцию, можно прочитать его.
with open('example.txt', 'r', encoding='utf-8') as f: lines = f.readlines() print(lines) # 👉️ ['bobby\thadz\n', 'first\tsecond']
Символ \n
служит для добавления перевода на новую строку.
Если вам нужно разделить элементы списка табуляциями и записать результат в файл, используйте метод str.join()
.
with open('example.txt', 'w', encoding='utf-8') as my_file: my_list = ['bobby', 'hadz', 'com'] my_file.write('\t'.join(my_list) + '\n')
Метод str.join
принимает в качестве аргумента итерируемый объект и возвращает строку, которая является конкатенацией строк из итерируемого объекта.
Обратите внимание, что метод выдает ошибку типа TypeError, если в итерируемом объекте есть значения, не являющиеся строками. Чтобы этого избежать, перед вызовом join()
преобразуйте данные других типов в строки.
with open('example.txt', 'w', encoding='utf-8') as my_file: my_list = ['bobby', 1, 'hadz', 2, 'com'] my_file.write('\t'.join(str(item) for item in my_list) + '\n')
Строка, на которой вызывается метод, используется в качестве разделителя между элементами.
Мы вызвали метод str.join()
на строке — символе табуляции, чтобы соединить элементы списка через табуляцию.
Содержимое файла выглядит следующим образом:
bobby 1 hadz 2 com
В качестве альтернативы можно обращаться к каждому элементу списка по индексу и использовать оператор сложения.
with open('example.txt', 'w', encoding='utf-8') as my_file: my_list = ['bobby', 1, 'hadz', 2, 'com'] my_file.write( my_list[0] + '\t' + str(my_list[1]) + '\t' + my_list[2] + '\t' + str(my_list[3]) + '\t' + my_list[4] + '\n' )
Не забывайте следить за тем, чтобы значения с левой и правой стороны оператора были строковыми. Значения других типов сначала нужно привести к типу string при помощи str()
.
Вы также можете использовать цикл for
для итерации по списку и добавления табуляции после каждого элемента.
with open('example.txt', 'w', encoding='utf-8') as my_file: my_list = ['bobby', 1, 'hadz', 2, 'com'] for word in my_list: my_file.write(str(word) + '\t') my_file.write('\n')
Цикл for
перебирает элементы списка и использует оператор сложения для добавления табуляции после каждого элемента.
Последний шаг — запись символа новой строки (\n
) в файл.
Как печатать пробелы в Python
Для печати нескольких последовательных пробелов используйте оператор умножения.
print(' ') # 👉️ ' ' print(' ' * 5) # 👉️ ' ' print(repr(' ')) # 👉️ ' ' print(repr(' ' * 5)) # 👉️ ' ' space = ' ' print(f'bobby{space * 5}hadz') # 👉️ 'bobby hadz' print('bobby' + ' ' * 5 + 'hadz') # 👉️ 'bobby hadz' print('bobby', 'hadz', 'com') # 👉️ bobby hadz com
Когда оператор умножения используется со строкой и целым числом, он повторяет строку указанное количество раз.
print(' ') # 👉️ ' ' print(' ' * 5) # 👉️ ' ' print(repr(' ')) # 👉️ ' ' print(repr(' ' * 5)) # 👉️ ' '
Используйте функцию repr()
, если вам нужно напечатать кавычки вокруг строки, чтобы проверить ее длину.
Вы также можете сохранить пробел в переменной и умножать переменную на N
.
space = ' ' print(space) # 👉️ ' ' print(space * 5) # 👉️ ' ' print(repr(space)) # 👉️ ' ' print(repr(space * 5)) # 👉️ ' '
Как напечатать пустую строку
Если вам нужно напечатать пустую строку, вызовите функцию print()
, не передавая ей никаких аргументов.
print('before') print() print('after') # before # after
Печать пробелов при форматировании строки
Чтобы вывести пробелы между переменными или при форматировании строки, используйте f-строки.
space = ' ' print(f'bobby{space * 5}hadz') # 👉️ 'bobby hadz' first = 'bobby' last = 'hadz' print(f'{first}{space * 5}{last}') # 👉️ bobby hadz
Обязательно заключайте выражения в фигурные скобки — {expression}
.
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz
Если вы используете строку, содержащую пробел, обязательно чередуйте одинарные и двойные кавычки.
print(f'bobby{" " * 5}hadz') # 👉️ 'bobby hadz' first = 'bobby' last = 'hadz' print(f'{first}{" " * 5}{last}') # 👉️ bobby hadz
f-строка заключена в одинарные кавычки, поэтому для внутренней строки нам пришлось использовать двойные. Если бы мы использовали одинарные кавычки и внутри, и снаружи, то преждевременно прервали бы f-строку.
Для печати пробелов можно также использовать оператор сложения.
first = 'bobby' last = 'hadz' print(first + ' ' * 5 + last) # 👉️ bobby hadz print('bobby' + ' ' * 5 + 'hadz') # 👉️ 'bobby hadz'
Не забывайте о приведении типов.
print('Number:' + ' ' * 5 + str(100)) # 👉️ Number: 100
Если вам нужно напечатать несколько значений через пробел, при вызове print() просто разделяйте значения запятыми.
print('bobby', 'hadz', 'com') # 👉️ bobby hadz com
Если в print()
не передавать разделитель (аргумент sep
), то по умолчанию в качестве разделителя используется пробел.
print('bobby', 'hadz', sep='') # 👉️ bobbyhadz print('bobby', 'hadz') # 👉️ bobby hadz
Функция print()
также принимает аргумент end
. Он выводится в конце сообщения.
print('a', 'b', 'c') # 👉️ 'a b c\n' print('a', 'b', 'c', end='') # 👉️ 'a b c'
По умолчанию end
— это символ новой строки (\n
).
Если задать в качестве аргумента end
пустую строку, то символ новой строки в конце сообщения не добавляется.
Перевод статьи «How to print a Tab in Python».