赋予字符串“\ t”的运行函数每次都看起来不同

时间:2016-12-09 13:27:35

标签: python

我有一个函数,它将给我最外层的值(key_n)和最内层的值,附加到单个字符串,然后将它附加到包含所有单个字符串组合的字符串(希望这是有意义的)

big_milon = {'key_1' : {'{key1':'dasdadsad', 'key2': 'hat', 'key3':'cat'},
         'key_2' : {'key1':'fat', 'key2': 'pat','key3':'lat'}}

def string_getter():
    prop_string = ''
    full_list = ''
    for i,j in big_milon.items():
        prop_list = []
        itemcode = i
        prop = list(j.values())
        for l in range(len(prop)):
            prop_string =  prop_string +'\t'+ "{" + prop[l] + "}"
        full_list = full_list + itemcode + prop_string + '\n'
        prop_string = ''
    return full_list

print(string_getter())

它工作得很好,除了有时候,它看起来像值之间有一个标签,它看起来像两个标签或没有标签

e.g。

print(string_getter())

enter image description here

1 个答案:

答案 0 :(得分:3)

\t不是用于间距,而是用于制表。默认情况下,\t(或tabulation)会跳到下一列8的倍数...(实际上为+ 1,因为我们从1开始计数)。所以,如果你在第1-8列,\t将跳到第9列。如果你在9-16,它将跳到17,等等。

至少,这是旧的意义 - 来自机械打字机和电传打字机。 (即使有一些余地:一些机械打字机允许设置标签栏)

The dots are spaces, the arrows are the result of tab characters, tabs size set to 8 点是空格,箭头是制表符字符的结果,制表符大小设置为8

现代计算机和编辑器允许重新定义选项卡大小 - 通常在首选项中。他们经常允许自动将标签(\t)更改为空格,反之亦然。

通常,这会使标签变成噩梦。您可以使用制表符(例如程序)编写文本,但如果您将其发送给某人,则大多数情况下他/她会以不同的方式看到该文本。以下是由标签和不同设置分隔的“单词”的一些示例:

Tab size set to 8 标签尺寸设为8

Tab size set to 2 标签大小设置为2

Tab size set to 4 标签大小设置为4

此例外的是use of \t as a data separator(或多或少与您一样)。除非有些单词长度超过8个字符,否则输出中的顺序仍然有一定程度。

另一方面,像Python这样的语言,依赖于格式代码的间距,尤其受到这个和recommend not changing the tab size from 8的影响。而Python 3显然甚至不允许混合标签和空格以避免更多的混淆。

更糟糕的是,某些上下文中的标签具有其他含义:例如在stackoverflow.com中,标签更改“区域”。如果我现在按Tab键,我将进入屏幕的其他部分。 Here是计算机使用标签的一些使用指南。