Python文本格式

时间:2013-04-24 17:47:37

标签: python string-formatting

需要一些Python字符串格式的帮助 我有两个代码:

a = "Hello"
b = False
p = "Python rocks"
q = True

我想要打印a,b,p&我喜欢这样:

Hello ................................. False
Python rocks .......................... True

每行的总长度(从Hello到False)是固定的,比如70个字符。

(编辑)正在尝试以下内容。显然不是一个好方法(而且不正确),因此问题

arr = [ ["Hello", False], ["Python rocks", True]]
totallen = 70

for e in arr:
    result = "{0}".format(e[1])
    dottedlen = totallen - len(e[0]) - len(result) - 2
    dottedstr = "." * dottedlen
    str = "".join([e[0], " ", dottedstr, " ", result])
    print str

2 个答案:

答案 0 :(得分:1)

使用string formatting

In [48]: def solve(a,b):
    a,b=str(a),str(b)
    spaces=len(a.split())-1
    return "{0} {1} {2}".format(a,"."*(68-len(a)-len(b)-spaces),b)
   ....: 

In [49]: print solve(a,b);print solve(p,q)
Hello .......................................................... False
Python rocks ................................................... True

答案 1 :(得分:0)

只需创建一个函数,将句点添加到固定数量的字符:

def formatter(my_string,length,my_boolean):
    my_string += " " + "." * (length - len(my_string))
    print my_string, my_boolean
formatter(a,70,b)
formatter(p,70,q)

注意:打印而不是返回的原因是当您返回然后打印它时,使用此方法打印以下内容:

('Hello .................................................................', False)
('Python rocks ..........................................................', False)

但没有返回,只需直接从函数打印就可以得到你想要的东西:

Hello ................................................................. False
Python rocks .......................................................... False