首页 > 解决方案 > 从 csv 文件格式化表格

问题描述

我正在尝试仅使用 CSV 模块从 CSV 文件中的数据制作表格。谁能告诉我应该怎么做才能显示“|” 在每一行的末尾(就在行中的最后一个元素之后)?这是我到目前为止所拥有的:

def display_playlist( filename ):

     if filename.endswith('.csv')==False: #check if it ends with CSV extension
         filename = filename + ('.csv') #adding .csv if given without .csv extension
     max_element_length=0
     #aligning columns to the longest elements
     for row in get_datalist_from_csv( filename ):
         for element in row:
             if len(element)>max_element_length:
                 max_element_length=len(element)
        # print(max_element_length)                
     #return max_element_length

     print('-----------------------------------------------------------------------------')
     for row in get_datalist_from_csv( filename ):
         for element in row:
             print('| ', end='')
             if (len(element)<=4 and element.isdigit==True):
                 print(pad_to_length(element,4), end=' |')  #trying to get '|' at the end[enter image description here][1]
             else:
                 print(pad_to_length(element, max_element_length), end=' ')

         print('\n')
     print('-----------------------------------------------------------------------------')

## Read data from a csv format file
def get_datalist_from_csv( filename ):
    ## Create a 'file object' f, for accessing the file: 
    with open( filename ) as f:  
         reader = csv.reader(f)     # create a 'csv reader' from the file object
         datalist = list( reader )  # create a list from the reader 
    return datalist # we have a list of lists

## For aligning table columns
## It adds spaces to the end of a string to make it up to length n.
def pad_to_length( string, n):
    return string + " "* (n-len(string)) ## s*n gives empty string for n<1

我现在得到的图像是:


| 跟踪 | 艺术家 | 专辑 | 时间

| 电脑爱| 牛皮纸 | 电脑世界 | 7:15

| 偏执的安卓 | 无线电台 | 好电脑 | 6:27

| 电脑时代 | 尼尔杨 | 反式 | 5:24

| 数字 | 欢乐事业部 | 仍然 | 2:50

| 银机 | 鹰风 | 路鹰 | 4:39

| 启动模拟器 | 啊哈 | 山脚 | 5:11

| 互联网连接 | 米娅 | 玛雅 | 2:56

| 深蓝 | 街机火灾 | 郊区 | 4:29

| 我会派生!| 马修心灵 | 优管 | 3:17

| 罗巴切夫斯基 | 汤姆·莱勒 | 优管 | 3:04


标签: pythonfilecsv

解决方案


推荐阅读