在Python中打印直到特定字符位置

3

首先,如果这是一个已经被回答很多次的问题,我表示歉意,我找了很长时间才找到答案,但由于我刚开始学习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个回答

7
使用 str.ljust
>>> '// {} {}'.format('USERID:'.ljust(16, '.'), 'ADET_ID')
'// USERID:......... ADET_ID'

更简单的方法是使用指定填充字符的 str.format(参见格式化字符串语法):
>>> '// {:.<16} {}'.format('USERID:', 'ADET_ID')
'// USERID:......... ADET_ID'
  • .:填充字符
  • <:左对齐
  • 16:结果字符串的宽度

为什么是16?

20-4

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


正是我所需要的。谢谢。 - cjwert

1

尽管在任何生产代码中,您应该使用@falsetru的答案,但如果您是编程新手,则学习如何“手动”执行此操作非常有用:

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....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接