【问题标题】:How do I write a "tab" in Python?如何在 Python 中编写“选项卡”?
【发布时间】:2010-12-20 10:04:11
【问题描述】:

假设我有一个文件。 “你好”TAB“alex”怎么写?

【问题讨论】:

  • 制表符暗示'\t'
  • 这个问题的标题很模糊。

标签: python tabs


【解决方案1】:

这是代码:

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

字符串中的\t 是水平制表的转义序列。

【讨论】:

  • Windows 上的cmd 中使用print "a\tb" 给了我a (8 spaces)b。为什么打印 8 个空格而不是制表符。
  • 您还期待什么?
  • 显示a (tab character)b
  • @RickHenderson 这不是真的,制表符不仅仅是多个空格。也许您的编辑器配置为在按制表符时插入空格。 " " 是一个制表符 " " 是一个空格。您可能在这里看不到区别,但打开 Word/Libre 就会看到区别。
  • @IulianOnofrei 这可能是 cmd 本身的实现问题。等宽控制台可能会以不同于文本编辑器的方式处理文本显示,并自动将制表符转换为屏幕上的空格。
【解决方案2】:

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 的一半。我该怎么做?
【解决方案3】:

您可以在字符串文字中使用 \t:

"hello\talex"

【讨论】:

    【解决方案4】:

    在命令行界面中通常是\t,它会将字符\t转换为空白制表符。

    例如,hello\talex -> hello--->alex

    【讨论】:

      【解决方案5】:

      由于在任何答案中都没有提到,以防万一您想对齐和间隔文本,您可以使用字符串格式功能。 (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 
      

      【讨论】:

      • 如何赋予制表符以将 3 维数组元素打印为 0 12 24 为 3 行?
      • 添加到答案中
      【解决方案6】:

      这里有一些更奇特的 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'。

      参考respective Python documentation

      【讨论】:

        【解决方案7】:

        假设我有一个名为 file 的变量,其中包含一个文件。 然后我可以使用file.write("hello\talex")

        1. file.write("hello 表示我开始写入此文件。
        2. \t 表示标签
        3. alex") 是我正在写的其余部分

        【讨论】:

        • 不应该是你在步骤 2 中提到的 \t 吗?
        • @User1010 \t 确实表示标签。我正在使用escape characters
        • 我对转义字符很熟悉,但是你写的是 hello/t not hello\t
        • @User1010 我在file.write("hello\talex") 上发生了意外。现在我修好了。
        猜你喜欢
        • 2023-03-19
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多