Python - 把CSV文件作为表格打印到控制台

3
我一直试图将csv文件以表格的形式打印到控制台中。
--> 期望的输出结果:
Key   Field_1   Field_2   Field_3   Field_4
A0    B0        C0        D0        E0
A1    B1        C1        D1        E1
A2    B2        C2        D2        E2

但是,我尝试过的下一个方法是无法得到它。

--> CSV文件

Key,Field_1,Field_2,Field_3,Field_4
A0,B0,C0,D0,E0
A1,B1,C1,D1,E1
A2,B2,C2,D2,E2

--> 方法1:

import csv

file = "file.csv"
opened = open(file, "r")
readed = csv.reader(opened, delimiter=",")
for row in readed:
    print(row)

--> 方法1的输出:

["Key", "Field_1", "Field_2", "Field_3", "Field_4"]
["A0", "B0", "C0", "D0", "E0"]
["A1", "B1", "C1", "D1", "E1"]
["A2", "B2", "C2", "D2", "E2"]

方法1可以正确打印出所有的值,但我没有找到任何方法使其按照我想要的格式进行打印。

--> 方法2:

import pandas as pd

file = "file.csv"
opened = open(file, "r")
readed = pd.read_csv(file)
print(readed)

--> 方法2的输出结果:

Key   Field_1   ...   Field_4
A0    B0        ...        E0
A1    B1        ...        E1
A2    B2        ...        E2

由于我使用的值很长且字段数量很多,部分列被切掉了,只留下了部分信息。(也许对我展示的表格有效,但在我的情况下,A-E字段每个可能有多达20个字符)
我还没有遇到其他能够给我第一个值的方法,我主要尝试使用方法1和2来获得我想要的输出。
谢谢。

方法1:print('\t'.join(row))行得通吗? - undefined
@roganjosh 差不多了,这样就去掉了 [],但是间距不正确,所以标题和值不在同一行上。 - undefined
3个回答

3

考虑到您想要的格式,使用Pandas是最好的选择。如果要解决列省略号的问题,可以通过更改Pandas的display.max_columns选项来解决。

示例:

import pandas as pd

file = "file.csv"
df = pd.read_csv(file)
pd.options.display.max_columns = len(df.columns)
print(df)

0
我建议您考虑使用tabulatepandas结合使用。根据这个情况:

我一直在尝试以表格的形式将csv文件打印到控制台中。

如果您的主要目标是控制输出的性质,通过使用tabulate,您将能够指定许多演示细节,例如边框的存在、文本对齐、标题和索引的显示。

示例

使用heavy_grid格式应用于示例csv文件,生成表格输出。

from tabulate import tabulate
import pandas as pd
print(tabulate(pd.read_csv("grad-adm.csv", nrows=5), 
               headers="keys", tablefmt="heavy_grid"))

输出

┏━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃    ┃   columnA ┃   columnB ┃   OtherColumn ┃   rank ┃
┣━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━┫
┃  0 ┃         0 ┃        10 ┃          3.61 ┃      3 ┃
┣━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━┫
┃  1 ┃         1 ┃        20 ┃          3.67 ┃      3 ┃
┣━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━┫
┃  2 ┃         1 ┃        30 ┃          4    ┃      1 ┃
┣━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━┫
┃  3 ┃         1 ┃        40 ┃          3.19 ┃      4 ┃
┣━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━┫
┃  4 ┃         0 ┃        50 ┃          2.93 ┃      4 ┃
┗━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━┛

-1
在pandas中,您可以使用max_colwidth选项来配置最大字符串长度。
pd.set_option("display.max_colwidth", 10000) have

这对我来说似乎不起作用,我想这是另一种表达pd.options.display.max_columns的方式,正如Henry所说的,无论如何还是谢谢。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接