function def show_table创建一个并返回一个表示2D表

时间:2016-03-20 05:19:31

标签: python string format

使用我的代码,我遇到了间距问题,并且找到了一种方法来确定每列的长度,这种方式我知道何时有换行符。 列用一个垂直条“|”分隔;并且必须有一个空格 垂直杆前后; o每行以竖条开始和结束;之后必须有一个空格 前导栏和结束栏之前 这是我到目前为止的代码:

def show_table(table):
    string = '' 
    for i in table: 
        for j in range(len(i)):
            line = i[j]
            string += "{}".format(line) + "|"

    return "|" + string +"\n"

有一个限制:您必须使用字符串格式,%或.format()。 以下是列表列表的示例 这是一个例子:

>>> show_table([['A','BB'],['C','DD']])
'| A | BB |\n| C | DD |\n'
>>> print(show_table([['A','BB'],['C','DD']])) 
| A | BB |
| C | DD |

1 个答案:

答案 0 :(得分:2)

你的代码非常接近,但你没有在竖条周围找到合适的空格,而且你也没有处理表格中每一行的结尾。

您不必担心列的宽度,因为您的分配说明只是在列表项和竖线之间放置一个空格。

这是修改后的代码版本,只需稍加修改。

def show_table(table):
    string = '' 
    for i in table: 
        for j in range(len(i)):
            line = i[j]
            string += '| {} '.format(i[j])
        string += '|\n'

    return string

print(show_table([['A','BB'],['C','DD']]))    

<强>输出

| A | BB |
| C | DD |

更直接在列表上迭代Pythonic,而不是使用列表索引间接迭代。

def show_table(table):
    string = '' 
    for line in table: 
        for item in line:
            string += '| {} '.format(item)
        string += '|\n'

    return string

更紧凑的方法是使用列表理解:

def show_table(table):
    return ''.join(['| {} |\n'.format(' | '.join(row)) for row in table])