【问题标题】:How to format result from csv file to look more like a table如何将 csv 文件的结果格式化为更像表格
【发布时间】:2020-10-28 12:56:02
【问题描述】:

如何将输出格式化为类似于以下设计的表格,同时省略不必要的列?我正在处理 def 两个,它会返回我想要的原始数据,但我不知道如何格式化它以类似于它下面的表格。

['1000.3', '', '']
['Coke Can', '1.1', '100']
['Bread', '0.7', '30']
['Spaghetti', '1.2', '100']
['Tomato Sauce', '0.8', '100']
['Bin Bags', '2.5', '4']
Enter anything to return to main menu


-----------------------------
Shop has 1000.30 in cash
-----------------------------
| Product             |  Qty |
-----------------------------
| Coke Can            | 00100|
|----------------------------|
| Bread               | 00030|
|----------------------------|
| Spaghetti           | 00100|
|----------------------------|
| Tomato Sauce        | 00100|
|----------------------------|
| Bin Bags            | 00004|
|----------------------------|


 

def two():
    with open('../stock.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        first_row = next(readCSV)
        print(first_row)
        for row in readCSV:
            print(row)
    anykey=input("Enter anything to return to main menu")
    mainMenu()   

#main routine
mainMenu()

【问题讨论】:

  • 你可以使用 pandas 而不是编写函数。编写函数会更耗时。但为此,如果您希望表格看起来像您在问题中显示的那样,您需要对 csv 文件进行一些更改。

标签: python csv format tabular


【解决方案1】:

只需稍微玩弄一下 print 语句,您应该能够轻松实现这一点。

import csv
fields = [] 
filename = "stock.csv"
with open(filename, 'r') as csvfile:
    csvreader = csv.reader(csvfile) 
    fields = next(csvreader)
    print('-'*40)
    print(f'Shop has {fields[0]} in cash')
    print('-'*40)
    for row in csvreader:
        print('-'*40)
        print('| ', row[0], ' '*(24-len(row[0])),'| ', row[2],' '*2, '|')
        print('-'*40)

【讨论】:

  • 谢谢。我真正想做的是让 csv 文件读取信息,而无需我对值进行硬编码并以表格形式生成它以反映上面的表格。
  • 完美运行。非常感谢。
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
相关资源
最近更新 更多