如何在python中使用csv作为实例属性?
Posted
技术标签:
【中文标题】如何在python中使用csv作为实例属性?【英文标题】:How to use csv as instance attritubes in python? 【发布时间】:2022-01-18 17:01:51 【问题描述】:如何导入 csv 文件并将其用作我的类的实例属性?
这是我写的代码:
import random
import csv
class Cars:
def __init__(self, driver, team):
self.driver = driver
self.team = team
class Race:
def __init__(self, lap = 55):
self.lap = lap
self._finished = []
def race(self, list_of_cars):
for c in list_of_cars:
c.distance = 0
while list_of_cars:
for c in list_of_cars:
c.distance += random.randint(100,300)
if c.distance >= self.lap:
self._finished.append(c)
list_of_cars.remove(c)
def print_results(self):
print("Tournament Result\n" + "_" * 18)
for i, c in enumerate (self._finished):
print (i+1, c.driver, c.team)
cars_list = []
with open("driverandteam.csv",'r') as file:
csv_reader = csv.reader(file)
for line in csv_reader:
cars_list.append(Cars(line[0],line[1]))
r = Race(65)
cars = cars_list
r.race(cars)
r.print.results()
driverandteam.csv 看起来像这样
Verstappen, Red Bull
Perez, Red Bull
Hamilton, Mercedes
Bottas, Mercedes
Leclerc, Ferrari
Sainz, Ferrari
Ricciardo, McLaren
Norris, McLaren
Ocon, Alphine
Alonso, Alphine
Tsunoda, AlphaTauri
Gasly, AlphaTauri
Vettel, Aston Martin
Stroll, Aston Martin
Latifi, Williams
Russell, Williams
Raikkonen, Alfa Romeo
Giovinazzi, Alfa Romeo
Mazepin, Haas
Schumacher, Haas
我在代码的第 36 行不断收到“超出范围列表”错误,但我不明白为什么。如何修复我的代码以使其正常工作。
【问题讨论】:
【参考方案1】:我在本地运行您的代码并使用提供的 csv(感谢您提供所有需要的信息!),最后我不得不对代码进行一点小改动:
r.print_results()
之后一切都按预期运行,我得到以下输出:
Tournament Result
__________________
1 Verstappen Red Bull
2 Hamilton Mercedes
3 Leclerc Ferrari
4 Ricciardo McLaren
5 Ocon Alphine
6 Tsunoda AlphaTauri
7 Vettel Aston Martin
8 Latifi Williams
9 Raikkonen Alfa Romeo
10 Mazepin Haas
11 Perez Red Bull
12 Sainz Ferrari
13 Alonso Alphine
14 Stroll Aston Martin
15 Giovinazzi Alfa Romeo
16 Bottas Mercedes
17 Gasly AlphaTauri
18 Schumacher Haas
19 Norris McLaren
20 Russell Williams
所以我无法重现您收到的错误,如果您仍然遇到此错误,请告诉我们,并且可以更新任何代码/数据以帮助重现。
【讨论】:
以上是关于如何在python中使用csv作为实例属性?的主要内容,如果未能解决你的问题,请参考以下文章
Python 3:如何在不保存在磁盘上的情况下将 pandas 数据帧作为 csv 流上传?