Python文本格式
需要Python字符串格式方面的帮助Python文本格式,python,string-formatting,Python,String Formatting,需要Python字符串格式方面的帮助 我有两个密码: a = "Hello" b = False p = "Python rocks" q = True 我想这样打印a、b、p&q: Hello ................................. False Python rocks .......................... True 每行的总长度(从Hello到False)是固定的,比如说70个字符 (编辑)正在尝试以下操作。显然这不是一个好办法(也是不正确的)
我有两个密码:
a = "Hello"
b = False
p = "Python rocks"
q = True
我想这样打印a、b、p&q:
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
只需创建一个函数,将句点添加到您的固定字符数:
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
使用:
q
为False
,但您希望它打印True
?在您的预期输出中,第一行包含45个字符,第二行包含44个字符?这是我在描述中的错误。提到的输出就是我需要的。这是正确的。@user2248790我已更新我的答案。@user2248790他们已对齐,请参阅您在问题正文中发布的预期输出。不,您的输出与您的函数不匹配。将(68-镜头(a)-len(b)
替换为(69-镜头(a))
取而代之。@MartijnPieters OP说字符串的总长度是固定的,但即使是他预期的输出也包含不相等的字符数。他必须首先澄清这一点。诚然,措辞不明确,但输出格式示例足够清楚。接受这一回答:简单。完成任务和pythonic!
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