2015-10-29 43 views
2

是否可以使用\t键入特定宽度的制表符,还是系统定义的长度?制表符长度

示例代码:

print 'test\ttest 2' 
+2

对不起。我的意思是选项卡的宽度。例如,在我的Macbook上,一个选项卡宽度为4个空格。在我的Raspberry Pi上,它有8个宽的空间。 –

+0

许多编辑器可以配置为更改它们显示的制表符数量。标签是一个控制字符,它没有特定的宽度。这取决于它决定是将它显示为多个空格,还是一行或其他内容 - 因此它不是Macbook或Raspberry Pi的属性,它是特定文本编辑器和终端设置的属性你正在使用他们 – TessellatingHeckler

回答

7

这是不可能的。但是,你可以使用str.expandtabs的空间自定义的金额替代每个标签:

print repr('test\ttest 2'.expandtabs()) 
# output: 'test test 2' 

print repr('test\ttest 2'.expandtabs(2)) 
# output: 'test test 

编辑:请注意,使用str.expandtabs时,标签的宽度将取决于其中字符串的标签是:

print repr('test\ttest 2'.expandtabs(8)) 
print repr('tessst\ttest 2'.expandtabs(8)) 
# output: 'test test 2' 
#   'tessst test 2' 

如果希望每个标签由空格specifyed号码代替,你可以使用str.replace

print repr('test\ttest 2'.replace('\t', ' ' * 8)) 
print repr('tessst\ttest 2'.replace('\t', ' ' * 8)) 
# output: 'test  test 2' 
#   'tessst  test 2' 
+0

谢谢你! –

+0

同意。正如您可以比较您的Macbook和Raspberry Pi,选项卡的宽度由显示它的程序决定。所以答案随着每个程序而改变。上述解决方案可能会给出更可预测的结果,但坦率地说,一个空间的宽度也不是固有的固定的。如果一个程序用courier字体显示它,它可能是,但如果它显示在'Arial'中它是什么?或者如果(比如网页浏览器)将多个空白字符视为单个空间。 – RobertB

+0

@RobertB:一般来说,当你有任何数据时,你无法控制它将如何处理......而你并不需要。当你的正确输出处理不正确时,这不是你的问题。 (我不确定我是否正确理解你,如果我没有,请进一步询问我)。 – GingerPlusPlus