如何在打印tup中排列内容

2024-09-28 05:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在元组中排列内容以适合特定的列布局。你知道吗

布局示例:

PETER PAUL            MALE            100000
MARGARET              FEMALE          1000
MICHAEL JORDAN        MALE            1
AGNES                 FEMALE          200

但当我迭代元组以打印内容时,它会输出:

PETER PAUL            MALE            100000
MARGARET             FEMALE            1000
MICHAEL JORDAN            MALE            1
AGNES            FEMALE            200

同样,当I return row时,它只返回第一个tuple,而不是全部返回。我返回它是因为我想在另一个函数中使用它。你知道吗

代码如下:

def text():
    rows = (("PETER PAUL", "MALE", "100000"), ("MARGARET ", "FEMALE", "1000"), ("MICHAEL JORDAN", "MALE", "1"),("AGNES", "FEMALE", "200"))

    for row in rows:
       # print("          ".join(row))
        print("".join(row[0]), "".join("          "), "".join(row[1]), "".join("          "), "".join(row[2]))
        #return row

text()

我使用join方法,但是我找不到ljust,我想在python3中已经找不到了。你知道吗


Tags: text内容return布局malefemalepeterrow
2条回答

使用内联格式:

def text():
    t = []
    rows = (("PETER PAUL", "MALE", "100000"),  ("MARGARET ", "FEMALE", "1000"), 
            ("MICHAEL JORDAN", "MALE", "1"),   ("AGNES", "FEMALE", "200"))

    for row in rows:
        t.append(f'{row[0]:<30}{row[1]:<10}{row[2]:<20}') 

    return t

for n in text():
    print(n) 

输出:

PETER PAUL                    MALE      100000              
MARGARET                      FEMALE    1000                
MICHAEL JORDAN                MALE      1                   
AGNES                         FEMALE    200    

格式化:

<20不需要字符串,因为left adjust是默认值,如果需要right adjust,请使用>20。有关格式化语言构造的更多信息,请参见链接。你知道吗

使用Python的字符串^{}为每个元素指定一个固定的宽度:

def text():
    rows = (("PETER PAUL", "MALE", "100000"), ("MARGARET ", "FEMALE", "1000"), ("MICHAEL JORDAN", "MALE", "1"),("AGNES", "FEMALE", "200"))

    for row in rows:
        print('{:20} {:8} {}'.format(*row))

text()   

给你:

PETER PAUL           MALE     100000
MARGARET             FEMALE   1000
MICHAEL JORDAN       MALE     1
AGNES                FEMALE   200

format()命令的工作原理是用传递给它的参数替换字符串中的每个{},在本例中是*row*的作用是将row中的三个值扩展为需要扩展的三个参数。你知道吗


要返回格式化文本,首先需要创建格式化行的列表,然后使用'\n'.join()将它们连接在一起,并在末尾添加换行符:

def text():
    rows = (("PETER PAUL", "MALE", "100000"), ("MARGARET ", "FEMALE", "1000"), ("MICHAEL JORDAN", "MALE", "1"),("AGNES", "FEMALE", "200"))

    data = []

    for row in rows:
        data.append('{:20} {:8} {}'.format(*row))

    return '\n'.join(data)

print(text())

这也可以通过使用Python“列表理解”非常简洁地完成,如下所示:

def text():
    rows = (("PETER PAUL", "MALE", "100000"), ("MARGARET ", "FEMALE", "1000"), ("MICHAEL JORDAN", "MALE", "1"),("AGNES", "FEMALE", "200"))
    return '\n'.join('{:20} {:8} {}'.format(*row) for row in rows)

print(text())

相关问题 更多 >

    热门问题