打印直到python中的特定字符位置

时间:2014-01-20 09:09:10

标签: python string python-3.x

首先我道歉,如果这是一个已经多次回答的问题,我会在一段时间内寻找答案,但是我发现的大部分内容都是因为我刚刚开始学习python。但这是我的问题:

我想打印期间直到行的第20个字符或列,以便句点右侧的数据全部排成一行,如下所示。

--------------- 
HDL 
--------------- 
//============================================================ 
// USERID:........ ADET_ID 
// PROGRAMMER:.... Lname, Fname MI. 
// COURSE:........ CSCI-400 
// TERM:.......... SP14 
// PROJECT:....... 01 
// FILENAME:...... AnExample.hdl 
//============================================================ 

以下是我目前所拥有的内容,但如何在没有实际硬编码的情况下考虑这些时段?

print("//", end = "")
for num in range (0,self.dividerLength):
    print("=", end = "")
print("\n", end = "")
print("// USERID:")
print("// PROGRAMMER:")
print("// COURSE:")
print("// TERM:")
print("// PROJECT:")
print("// FILENAME:")
return ""

2 个答案:

答案 0 :(得分:7)

使用str.ljust

>>> '// {} {}'.format('USERID:'.ljust(16, '.'), 'ADET_ID')
'// USERID:......... ADET_ID'

更简单地使用指定了fill字符的str.format(请参阅Format string syntax):

>>> '// {:.<16} {}'.format('USERID:', 'ADET_ID')
'// USERID:......... ADET_ID'
  • .:填充字符
  • <:left alignment
  • 16:结果字符串的宽度

为什么选择16?

20 - 4

4 = 2(对于//)+ 1(//之后的空格)+ 1(.之后的空格)

答案 1 :(得分:1)

虽然您应该对任何生产代码使用@fatetru的答案,但如果您不熟悉编程,那么了解如何“手动”执行此操作非常有用:

DESIRED_SIZE= 10 #size of the final string we want
s= "USERID"      #our initial string
n= DESIRED_SIZE-len(s) # how many characters must we add
#create a string with n "." characters
#on a lower-level language (like C) you'll need to use a loop to do this
padding= "."*n   
result= s+padding
print result

这会打印USERID....