Python 将列写入CSV文件

Python 将列写入CSV文件,python,csv,Python,Csv,我想为csv文件中的特定行更新名为Score的列。按下按钮时,我希望代码搜索csv文件,直到找到具有指定名称的行(该行存储在变量name中,并在前面名为NameGenerator()的函数中从csv文件中随机抽取),并更新Score列中的相关单元格,使其增量为1 请注意,我使用的excel文件保存为.csv格式 有什么办法吗?下面的代码不起作用。任何帮助都将不胜感激 def Correct(): writer = csv.writer(namelist_file) score=0

我想为csv文件中的特定行更新名为
Score
的列。按下按钮时,我希望代码搜索csv文件,直到找到具有指定名称的行(该行存储在变量
name
中,并在前面名为
NameGenerator()
的函数中从csv文件中随机抽取),并更新
Score
列中的相关单元格,使其增量为1

请注意,我使用的excel文件保存为.csv格式

有什么办法吗?下面的代码不起作用。任何帮助都将不胜感激

def Correct():
    writer = csv.writer(namelist_file)
    score=0
    for row in writer:
        if row[0] == name:
            score=score+1
            writer.writerow([col[1]] = score)
例如,如果选择了tom这个名字(在代码的其他地方,但是存储在变量
name
),他的3分应该增加1,变成4分

下面是从csv文件中提取随机名称的函数的外观:

def NameGenerator():
    namelist_file = open('StudentNames&Questions.csv')
    reader = csv.reader(namelist_file)
    rownum=0
    global array
    array=[]
    for row in reader:
        if row[0] != '':
            array.append(row[0])
            rownum=rownum+1
    length = len(array)-1
    i = random.randint(1,length)
    name = array[i]
    return name

请您检查一下这是否有效:

import sys
import random,csv

def update(cells):
    d=""
    for cell in cells:
        d=d + str(cell)+","
    return d[:-1]

def update_score(name):
    with open('StudentNames&Questions.csv', 'r') as file:
        data = file.readlines()
    name_index = - 1
    score_index = -1
    headers = data[0]
    for index,header in enumerate(headers.split(",")):
        if header.strip() == 'Names':
            name_index=index
        if header.strip() == 'Score':
            score_index=index
    if name_index == -1 or score_index == -1:
        print "Headers not found"
        sys.exit()

    for index,row in enumerate(data):
        cells = row.split(",")
        if cells[name_index] == name:
            cells[score_index] = int(cells[score_index]) + 1
        data[index]=update(cells)

    with open('/Users/kgautam/tmp/tempfile-47', 'w') as file:
        file.writelines(data)


def NameGenerator():
    namelist_file = open('StudentNames&Questions.csv')
    reader = csv.reader(namelist_file)
    rownum=0
    global array
    array=[]
    for row in reader:
        if row[0] != '':
            array.append(row[0])
            rownum=rownum+1
    length = len(array)-1
    i = random.randint(1,length)
    name = array[i]
    return name


randome_name=NameGenerator()
update_score(randome_name)

文件的第一行是否包含标题?您能提供一个示例输入吗?是的,第一行包含标题。当前没有输入。它当前是一个满是0'的列。运行函数后,您可以编写一个输入csv+另一个样本,并使用您期望的内容?对您的意思有点困惑,但是我们已经进行了编辑。希望这是有帮助的谢谢你,我将试一试。这是最有效的方法吗?对于一个相当简单的任务,似乎有很多代码。我想也许你误解了我的要求。程序已经生成了名称。然后,它搜索csv文件,直到找到该名称,然后通过写入csv文件并更新其名称旁边的单元格来增加玩家的得分。@CallumTwig,此程序不会生成名称,而是使用现有名称。程序中使用的示例名称为“abc”。我已经更新了我的答案,让它更清楚。这个程序确实生成了一个名字。有一个函数可以从列表中随机抽取一个名字(在csv文件中),我也认为重要的是分数不应该自动递增。单击按钮时,我希望运行一个函数,然后增加分数。