Python将CSV行放入多个列表中

2024-09-23 22:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将csv文件中的每一行转换为列表。但下面的代码不起作用,而是将所有列转换为列表

def data():
import csv

f=open("mydata.csv","r")
reader=csv.reader(f)

Type=[]
BusPsngr=[]
Bus=[]
PersoVeh=[]
LoadTrks=[]



for row in reader:
    Type.append(row[0])
    BusPsngr.append(int(row[1]))
    Bus.append(int(row[2]))
    PersoVeh.append(int(row[3]))
    LoadTrks.append(int(row[4]))

my data

因此,对于每一行,我的第一个列表应该是List1=['Type'、'2000'、…..、'2012']等等


Tags: 文件csv代码列表datadeftypereader
1条回答
网友
1楼 · 发布于 2024-09-23 22:24:17

如果所需的只是文件中的行列表

with open("mydata.csv") as f:
  lines = list(csv.reader(f))

将使lines类似

[
  ["Type", "2000", ...],
  ["Bus Pass", "...."],
]

然后,您可以将其拆分为5个单独的列表:

Type, BusPsngr, Bus, PersoVeh, LoadTrks = lines[:5]

编辑

如果要跳过第一列,可以在读取CSV时使用列表理解将其剪切掉:

with open("mydata.csv") as f:
  lines = [line[1:] for line in csv.reader(f)]

编辑2

要将数据读入dict(以防行的顺序与预期不同)并同时将值转换为整数

with open("mydata.csv") as f:
  data = {
    line[0]: [int(v) for v in line[1:]]
    for line
    in csv.reader(f)
  }
print(set(data.keys()))
Type = data["Type"]
BusPsngr = data["Bus Passenger"]  # or whatever...

相关问题 更多 >