Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python文本格式_Python_String Formatting - Fatal编程技术网

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个字符 (编辑)正在尝试以下操作。显然这不是一个好办法(也是不正确的)

需要Python字符串格式方面的帮助
我有两个密码:

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