使用行和列标题读取CSV的Pythonic方法

Pio*_*dal 7 python csv

让我们有一个带有行和列标题的CSV表,例如:

, "Car", "Bike", "Boat", "Plane", "Shuttle"
"Red", 1, 7, 3, 0, 0
"Green", 5, 0, 0, 0, 0
"Blue", 1, 1, 4, 0, 1
Run Code Online (Sandbox Code Playgroud)

我想获得行和列标题,即:

col_headers = ["Car", "Bike", "Boat", "Plane", "Shuttle"]
row_headers = ["Red", "Green", "Blue"]
data = [[1, 7, 3, 0, 0],
        [5, 0, 0, 0, 0],
        [1, 1, 4, 0, 1]]
Run Code Online (Sandbox Code Playgroud)

当然我可以做点什么

import csv
with open("path/to/file.csv", "r") as f:
    csvraw = list(csv.reader(f))
col_headers = csvraw[1][1:]
row_headers = [row[0] for row in csvraw[1:]]
data = [row[1:] for row in csvraw[1:]]
Run Code Online (Sandbox Code Playgroud)

......但它看起来不够Pythonic.

这种自然操作有更简洁的方法吗?

Gar*_*tty 4

看一眼csv.DictReader

如果省略 fieldnames 参数,则 csv 文件第一行中的值将用作字段名。

那么你就可以这样做了reader.fieldnames。当然,这仅提供列标题。您仍然需要手动解析行标题。

不过,我认为您原来的解决方案非常好。