【问题标题】:Python print format with dot leader带点前导的 Python 打印格式
【发布时间】:2015-02-18 16:14:34
【问题描述】:

如何使用打印格式在 2 个对象之间放置一组字符(点前导)?

例如,我有以下代码:

os.chdir( "LOGS\\" )
for file in glob.glob('*'):
    with open(file) as f:
        contents = f.read()
    if 'HOST_POWER="ON"' in contents:
        print('{0:38} {1:3}'.format(file[:-4]," = ON"))

for file in glob.glob('*'):
    with open(file) as f:
        contents = f.read()
    if 'HOST_POWER="OFF"' in contents:
        print('{0:38} {1:3}'.format(file[:-4]," = OFF"))

输出:

server1.web.com          = ON
server2.web.com          = ON
server3334.web.com       = OFF
server5332223.web.com    = ON
server2233.web.com       = ON
server44.web.com         = ON
server1133333.web.com    = OFF

但我希望输出如下所示:

server1.web.com ............ ON
server2.web.com ............ ON
server3334.web.com ......... OFF
server5332223.web.com ...... ON
server2233.web.com ......... ON
server44.web.com ........... ON
server1133333.web.com ...... OFF

服务器{SPACE}............{SPACE}开启

服务器{SPACE}............{SPACE}关闭

【问题讨论】:

    标签: python-3.x printing printf string-formatting


    【解决方案1】:

    您可以在将字符串传递给打印之前对其进行编辑(编辑以获得您想要的格式):

    import glob
    
    def padStr( x, n ):
        x += ' '
        return x + '.'*(n - len(x) )
    
    for file in glob.glob('*.*'):
        with open(file) as f:
            contents = f.read()
        if 'HOST_POWER="OFF"' in contents:
            print('%s %s' % ( padStr(file[:-4], 38 ),"ON"))
    
    for file in glob.glob('*'):
        with open(file) as f:
            contents = f.read()
        if 'HOST_POWER="OFF"' in contents:
            print('%s %s' % ( padStr(file[:-4], 38 ),"OFF"))
    

    输出:

    blahblahblah ......................... ON
    f1 ................................... ON
    tes .................................. OFF
    

    【讨论】:

    • 我发现我可以使用 print(( padStr(file[:-4], 40 ) + " ON")) 获得相同的结果
    • '%s %s' % (a,b) 等价于'{0} {1}'.format( a, b )。对不起,我应该用那个。我更喜欢另一种表示法,并出于习惯使用它。
    【解决方案2】:

    另一个(稍微混乱的)选项是在将字符串用作格式 arg 之前将其固定在行中:

    print('{0} {1:3}'.format((f[:-4]+' ').ljust(38, '.'),"= ON"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多