Tri*_*ard 42 python string alignment
我试图添加间距来对齐两个字符串变量之间的文本,而不使用""这样做
尝试使文本看起来像这样,第二列对齐.
Location: 10-10-10-10 Revision: 1
District: Tower Date: May 16, 2012
User: LOD Time: 10:15
Run Code Online (Sandbox Code Playgroud)
目前它有这样编码,只是使用空格...
"Location: " + Location + " Revision: " + Revision + '\n'
Run Code Online (Sandbox Code Playgroud)
我尝试使用string.rjust和srting.ljust,但无济于事.
建议?
Iro*_*san 60
您应该能够使用格式方法:
"Location: {0:20} Revision {1}".format(Location,Revision)
Run Code Online (Sandbox Code Playgroud)
您必须根据标签的长度找出每行的格式长度.用户线将需要比位置或区域线更宽的格式宽度.
Cha*_*tie 41
尝试%*s与%-*s和前缀每个字符串列宽:
>>> print "Location: %-*s Revision: %s" % (20,"10-10-10-10","1")
Location: 10-10-10-10 Revision: 1
>>> print "District: %-*s Date: %s" % (20,"Tower","May 16, 2012")
District: Tower Date: May 16, 2012
Run Code Online (Sandbox Code Playgroud)
fra*_*xel 23
您可以使用它expandtabs来指定tabstop,如下所示:
>>> print ('Location:'+'10-10-10-10'+'\t'+ 'Revision: 1'.expandtabs(30))
>>> print ('District: Tower'+'\t'+ 'Date: May 16, 2012'.expandtabs(30))
#Output:
Location:10-10-10-10 Revision: 1
District: Tower Date: May 16, 2012
Run Code Online (Sandbox Code Playgroud)
小智 13
从 Python 3.6 开始,我们有了更好的选择,f-strings!
>>> print(f"{'Location: ' + location:<25} Revision: {revision}")
>>> print(f"{'District: ' + district:<25} Date: {date}")
>>> print(f"{'User: ' + user:<25} Time: {time}")
Run Code Online (Sandbox Code Playgroud)
输出:
Location: 10-10-10-10 Revision: 1
District: Tower Date: May 16, 2012
User: LOD Time: 10:15
Run Code Online (Sandbox Code Playgroud)
由于大括号内的所有内容都是在运行时计算的,我们可以输入与变量 location 连接的字符串 'Location: '。使用 :<25 将整个连接的字符串放入一个 25 个字符长的框中,< 表示您希望它左对齐。这样,第二列总是在为第一列保留的 25 个字符之后开始。
另一个好处是您不必计算格式字符串中的字符数。使用 25 将适用于所有字符,前提是 25 的长度足以包含左列中的所有字符。
https://realpython.com/python-f-strings/解释了 f-strings 相对于以前的选项的好处。 https://medium.com/@NirantK/best-of-python3-6-f-strings-41f9154983e解释了如何使用 <、> 和 ^ 进行左对齐、右对齐和居中对齐。
Joe*_*ish 10
@ IronMensan的格式方法答案是要走的路.但为了回答你关于ljust的问题:
>>> def printit():
... print 'Location: 10-10-10-10'.ljust(40) + 'Revision: 1'
... print 'District: Tower'.ljust(40) + 'Date: May 16, 2012'
... print 'User: LOD'.ljust(40) + 'Time: 10:15'
...
>>> printit()
Location: 10-10-10-10 Revision: 1
District: Tower Date: May 16, 2012
User: LOD Time: 10:15
Run Code Online (Sandbox Code Playgroud)
编辑注意此方法不需要您知道字符串的长度..format()也可能,但我不太熟悉它.
>>> uname='LOD'
>>> 'User: {}'.format(uname).ljust(40) + 'Time: 10:15'
'User: LOD Time: 10:15'
>>> uname='Tiddlywinks'
>>> 'User: {}'.format(uname).ljust(40) + 'Time: 10:15'
'User: Tiddlywinks Time: 10:15'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96825 次 |
| 最近记录: |