Python将csv文件中的某些值读入列表

时间:2017-11-09 22:55:43

标签: python list csv nested

我在将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)”但是,它只为我摆脱了“第一轮”标题)

干杯,

2 个答案:

答案 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)