簡體   English   中英

將列寫入CSV文件

[英]Writing columns to a CSV file

我想為csv文件中的特定行更新名為Score的列。 當按下按鈕時,我希望代碼搜索csv文件,直到找到具有指定名稱的行(該行存儲在變量name並在名為NameGenerator()的先前函數中從csv文件中隨機拉出),以及更新“ Score列中的相關單元格以增加1。

請注意,我為此使用了另存為.csv的Excel文件。

任何想法如何做到這一點? 下面的代碼不起作用。 任何幫助,將不勝感激。

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)

![CSV文件如下所示] 1因此,例如,如果選擇了名稱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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM