我在将csv文件中的特定数据读入Python中的列表时遇到了一些麻烦。下面是我的csv文件的示例:
Round 1
Player1 Score Player2 Score
P1 5 P2 3
P3 2 P4 4
Round 2
Player1 Score Player2 Score
P1 3 P4 6
Round 3...
(单元格在第1轮和第2轮的顶部合并)
我可以将此csv文件中的所有数据附加到列表中,但是,我想忽略包含“第1轮”的行以及包含“Player1”,“分数”等的下面的行只需附加数据。 “第2轮”行和下面的行也是如此。所需的列表如下所示:[[P1,5,P2,3] [P3,2,P4,4] [P1,3,P4,6]]。以下是我的代码示例:
playerScores = []
with open(scoreFile) as scores
for row in csv.reader(scores)
playerScores.append(row)
任何对此的帮助都会非常感激,因为我正在努力(PS我试图使用“next(scoreFile)”但是,它只为我摆脱了“第一轮”标题)
干杯,
答案 0 :(得分:0)
简单的if
条件怎么样?
playerScores = []
with open(scoreFile) as scores
for row in csv.reader(scores):
if row and not row[0].startswith('Round') and not row[0].startswith('Player'):
playerScores.append(row)
答案 1 :(得分:0)
从第2轮开始
您可以添加新标记later_rounds
:
playerScores = []
later_rounds = False
with open(scoreFile) as scores:
for row in csv.reader(scores):
if row and row[0].startswith('Round 2'):
later_rounds = True
if later_rounds and row and not row[0].startswith('Round') and not row[0].startswith('Player'):
playerScores.append(row)
或者你可以在另一个循环中跳过开头:
playerScores = []
with open(scoreFile) as scores:
scoreReader = csv.reader(scores)
for row in scoreReader:
if row and row[0].startswith('Round 2'):
break
for row in scoreReader:
if row and not row[0].startswith('Round') and not row[0].startswith('Player'):
playerScores.append(row)