python - 从一个大列表中将对象分配给一个类并打印它们中的每一个?
问题描述
我有一个包含 3331 场橄榄球比赛的文件,每场比赛有 9 个属性,它们是;
(日期、日期、年份、team_1、team_2、team_1_score、team_2_score、team_1_tries、team_2_tries、中立)。
样本数据:
15 Feb 1875, Mon, 1875, ENG, IRE, 7, 0, 2, 0, N
08 Mar 1875, Mon, 1875, SCO, ENG, 0, 0, 0, 0, N
13 Dec 1875, Mon, 1875, IRE, ENG, 0, 4, 0, 2, N
我创建了一个名为 Match 的类来存储这些数据,并尝试实现一种方法来打印每个匹配的数据,这就是我所拥有的;
class Match:
def __init__(self, date, day, year, team_1, team_2, team_1_score, team_2_score, team_1_tries, team_2_tries, neutral):
self.date=date
self.day=day
self.year=year
self.team_1=team_1
self.team_2=team_2
self.team_1_score=team_1_score
self.team_2_score=team_2_score
self.team_1_tries=team_1_tries
self.team_2_tries=team_2_tries
self.neutral=neutral
def show(self):
print("Date: " + self.date /n +
"Day: " + self.day /n +
"Year: " + self.year/n +
"Home Team :" + self.team_1 /n +
"Home Team Score: " + self.team_1_score /n +
"Home Team Tries: " + self.team_1_tries /n +
"Away Team: " + self.team_2 /n +
"Away Team Score: " + self.team_2_score /n +
"Away Team Tries: " + self.team_2_tries /n +
"Neutrality: " + self.neutral /n)
这部分是我认为我遇到麻烦的地方,我们必须真正检查我的文件(“RugbyResultsData.csv”)并为每场比赛创建一个对象,我们的讲师给了我们除了我们需要的一行之外的所有代码调整,但我不确定该去哪里,这是编程课程的第一年介绍,而且我本身并不是与 CS 相关的学位(数学)。
#Adjust this code to create a list of Match objects
matches = list()
count = 0
with open('RugbyResultsData.csv') as f:
for line in f:
words = line.split(',')
match = #Adjust code here
matches.append(match)
count = count + 1
print(str(count) + " matches loaded")`
在它说“在此处调整代码”的地方,我尝试执行 list(words) 可以让我获得匹配的每一行,但我不知道如何将这些数据转换为对象。之后,我需要遍历类的每个元素并打印它。
任何帮助表示赞赏,对不起,如果这是一个nooby问题
解决方案
这有效:
class Match:
def __init__(self, date, day, year, team_1, team_2, team_1_score, team_2_score, team_1_tries, team_2_tries, neutral):
self.date=date
self.day=day
self.year=year
self.team_1=team_1
self.team_2=team_2
self.team_1_score=team_1_score
self.team_2_score=team_2_score
self.team_1_tries=team_1_tries
self.team_2_tries=team_2_tries
self.neutral=neutral
def show(self):
print(
"\n".join((
"Date: " + self.date,
"Day: " + self.day,
"Year: " + self.year,
"Home Team :" + self.team_1,
"Home Team Score: " + self.team_1_score,
"Home Team Tries: " + self.team_1_tries,
"Away Team: " + self.team_2,
"Away Team Score: " + self.team_2_score,
"Away Team Tries: " + self.team_2_tries,
"Neutrality: " + self.neutral
))
)
matches = list()
count = 0
with open('RugbyResultsData.csv') as f:
for line in f:
words = line[:-1].split(',')
match = Match(*words)
matches.append(match)
count = count + 1
print(str(count) + " matches loaded")
正如@b_c 指出的那样,错误在show
.
推荐阅读
- python - django表单没有错误
- java - 2个viewholder实例之间的回收器视图动画
- reactjs - google-maps-react 在加载时设置 activeMarker
- plasticscm - PlasticsCM 是否在客户端文件上应用只读标签?
- node.js - 使用 mongoose-seed 播种 mongodb 时出错
- javascript - 模态上的选项卡不会关注更多元素
- google-cloud-platform - “gcr.io/cloud-builders/docker”失败:步骤以非零状态退出:2
- android - 与前台服务反应本机 - handleWindowVisibility:令牌 android.os.BinderProxy 没有活动
- java - java中的Json响应比较忽略json数组中的排序
- android - 我无法将参数类型“void Function(bool)”分配给参数类型“void Function(bool?)?”