【发布时间】:2010-12-20 10:04:11
【问题描述】:
假设我有一个文件。 “你好”TAB“alex”怎么写?
【问题讨论】:
-
制表符暗示'\t'
-
这个问题的标题很模糊。
假设我有一个文件。 “你好”TAB“alex”怎么写?
【问题讨论】:
这是代码:
f = open(filename, 'w')
f.write("hello\talex")
字符串中的\t 是水平制表的转义序列。
【讨论】:
Windows 上的cmd 中使用print "a\tb" 给了我a (8 spaces)b。为什么打印 8 个空格而不是制表符。
a (tab character)b
Python reference manual 包含几个可以在字符串中使用的字符串文字。这些特殊的字符序列被转义序列的预期含义所取代。
这里是一些更有用的转义序列的表格以及它们的输出描述。
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。
【讨论】:
\t 的一半。我该怎么做?
您可以在字符串文字中使用 \t:
"hello\talex"
【讨论】:
在命令行界面中通常是\t,它会将字符\t转换为空白制表符。
例如,hello\talex -> hello--->alex。
【讨论】:
由于在任何答案中都没有提到,以防万一您想对齐和间隔文本,您可以使用字符串格式功能。 (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
【讨论】:
这里有一些更奇特的 Python 3 方法来获取“hello”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"
实际上,可以在字符串文字中直接插入制表符,而不是使用转义序列。这是带有制表符的代码,可以复制并尝试:
"hello alex"
如果上面字符串中的选项卡在复制字符串期间不会丢失,那么“print(repr()”应该打印 'hello\talex'。
【讨论】:
假设我有一个名为 file 的变量,其中包含一个文件。
然后我可以使用file.write("hello\talex")。
file.write("hello 表示我开始写入此文件。\t 表示标签alex") 是我正在写的其余部分【讨论】:
file.write("hello\talex") 上发生了意外。现在我修好了。