Как мне написать «вкладку» в Python?

127

Допустим, у меня есть файл. Как мне написать "привет" TAB "alex"?

TIMEX
источник
6
вкладка подразумевает '\ t'
Pratik

Ответы:

154

Это код:

f = open(filename, 'w')
f.write("hello\talex")

\tВнутри строки является последовательность символов для горизонтальной табуляции.

Симона
источник
5
Использование print "a\tb"дает мне a (8 spaces)bв положение cmdON Windows. Почему вместо символа табуляции печатается 8 пробелов.
Юлиан Онофрей
Чего еще вы ожидали?
Simone
8
Показатьa (tab character)b
Юлиан Онофрей
@IulianOnofrei Символ табуляции - это непечатаемый символ, также известный как пробел. Вы ничего не видите, когда нажимаете клавишу Tab. Он просто перемещает текст на количество пробелов по умолчанию. Может быть, вы сможете нарисовать персонажей тем, чем хотите. Это ->?
Рик Хендерсон
4
@RickHenderson Это неправда, символ табуляции - это не просто количество пробелов. Возможно, ваш редактор настроен на вставку пробелов при нажатии табуляции. "" - это табуляция "" - это пробел. Вы можете не увидеть здесь разницы, но откройте Word / Libre, и вы увидите разницу.
Sativa
27

Справочное руководство Python включает несколько строковых литералов, которые можно использовать в строке. Эти специальные последовательности символов заменяются предполагаемым значением escape-последовательности.

Вот таблица некоторых наиболее полезных escape-последовательностей и описание их вывода.

Escape Sequence       Meaning
\t                    Tab
\\                    Inserts a back slash (\)
\'                    Inserts a single quote (')
\"                    Inserts a double quote (")
\n                    Inserts a ASCII Linefeed (a new line)

Базовый пример

Если бы я хотел напечатать некоторые точки данных, разделенные пробелом, я мог бы распечатать эту строку.

DataString = "0\t12\t24"
print (DataString)

Возвращает

0    12    24

Пример списков

Вот еще один пример, когда мы печатаем элементы списка и хотим распределить их по TAB.

DataPoints = [0,12,24]
print (str(DataPoints[0]) + "\t" + str(DataPoints[1]) + "\t" + str(DataPoints[2]))

Возвращает

0    12    24

Необработанные струны

Обратите внимание, что необработанные строки (строка, содержащая префикс «r»), строковые литералы будут игнорироваться. Это позволяет включать эти специальные последовательности символов в строки без изменения.

DataString = r"0\t12\t24"
print (DataString)

Возвращает

0\t12\t24

Что может быть нежелательным результатом

Длина строки

Также следует отметить, что строковые литералы имеют длину всего один символ.

DataString = "0\t12\t24"
print (len(DataString))

Возвращает

7

Необработанная строка имеет длину 9.

CodeCupboard
источник
Мне нужно, чтобы между моими элементами оставалось расстояние примерно в половину \t. Как я могу это сделать?
seralouk
25

Вы можете использовать \ t в строковом литерале:

"hello\talex"

Knio
источник
14

Обычно это используется \tв интерфейсах командной строки, которые преобразуют символ \tв символ табуляции с пробелом.

Например, hello\talex-> hello--->alex.

Darbio
источник
9

Поскольку об этом не упоминалось ни в одном ответе, на всякий случай, если вы хотите выровнять и разместить свой текст, вы можете использовать функции строкового формата. (выше Python 2.5) Конечно, \tэто токен TAB, тогда как описанный метод генерирует пробелы.

Пример:

print "{0:30} {1}".format("hi", "yes")
> hi                             yes

Другой пример с выравниванием по левому краю:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 
user1767754
источник
как дать символ табуляции для печати элемента трехмерного массива как 0 12 24 как 3 строки?
прия радж
Добавлен в ответ
user1767754
0

Вот еще несколько экзотических способов Python 3 получить "привет" TAB "alex" (проверено с Python 3.6.10):

"hello\N{TAB}alex"

"hello\N{tab}alex"

"hello\N{TaB}alex"

"hello\N{HT}alex"

"hello\N{CHARACTER TABULATION}alex"

"hello\N{HORIZONTAL TABULATION}alex"

"hello\x09alex"

"hello\u0009alex"

"hello\U00000009alex"

Фактически, вместо использования escape-последовательности можно вставить символ табуляции непосредственно в строковый литерал. Вот код с символом табуляции, который нужно скопировать и попробовать:

"hello alex"

Если табуляция в приведенной выше строке нигде не будет потеряна во время копирования строки, тогда "print (repr (<строка сверху>)" должна напечатать 'hello \ talex'.

См. Соответствующую документацию Python для справки.

user2273896
источник