Python 在csv文件中查找单元格?

Python 在csv文件中查找单元格?,python,csv,Python,Csv,我如何用Python编写CSV文件 我基本上有两列。第一列是事务名称列表,第二列是计时 我需要创建一段代码,当用户填写输入框时,它可以更新“计时”列 我已经在tkinter中设置了entrybox,并且已经准备好了文本变量。我可以获取变量,但我遇到的问题是获取textvariable并在csv文件中找到正确的单元格并覆盖它 基本上,我希望找到正确的单元格,并将值粘贴到csv文件中的内容上 有什么想法吗 谢谢您可以创建一个临时文件,将行复制到tmp文件,然后仅替换以事务名称开头的行。假设CSV每行

我如何用Python编写CSV文件

我基本上有两列。第一列是事务名称列表,第二列是计时

我需要创建一段代码,当用户填写输入框时,它可以更新“计时”列

我已经在tkinter中设置了entrybox,并且已经准备好了文本变量。我可以获取变量,但我遇到的问题是获取textvariable并在csv文件中找到正确的单元格并覆盖它

基本上,我希望找到正确的单元格,并将值粘贴到csv文件中的内容上

有什么想法吗


谢谢

您可以创建一个临时文件,将行复制到tmp文件,然后仅替换以事务名称开头的行。假设CSV每行有一个元组[name,value],您可以使用如下内容:

from tempfile import mkstemp
from os import close
from shutil import move

def update(filename, name, value):
    fd, path = mkstemp()
    with open(path,'w') as tmpfile:
        with open(filename) as csv:
            for line in cvs:
                if line.startswith(name):
                    tmpfile.write(",".join([name,value]))
                else:
                    tmpfile.write(line)
    close(fd)
    move(path, filename)
Col1,Col2
entry1,timestamp1
entry2,timestamp2

您可以创建一个临时文件,将行复制到tmp文件,然后仅替换以事务名称开头的行。假设CSV每行有一个元组[name,value],您可以使用如下内容:

from tempfile import mkstemp
from os import close
from shutil import move

def update(filename, name, value):
    fd, path = mkstemp()
    with open(path,'w') as tmpfile:
        with open(filename) as csv:
            for line in cvs:
                if line.startswith(name):
                    tmpfile.write(",".join([name,value]))
                else:
                    tmpfile.write(line)
    close(fd)
    move(path, filename)
Col1,Col2
entry1,timestamp1
entry2,timestamp2

假设您有一个名为
file.csv
的文件,该文件如下所示:

from tempfile import mkstemp
from os import close
from shutil import move

def update(filename, name, value):
    fd, path = mkstemp()
    with open(path,'w') as tmpfile:
        with open(filename) as csv:
            for line in cvs:
                if line.startswith(name):
                    tmpfile.write(",".join([name,value]))
                else:
                    tmpfile.write(line)
    close(fd)
    move(path, filename)
Col1,Col2
entry1,timestamp1
entry2,timestamp2
您可以像这样使用csv库来修改任何条目并将其粘贴到新的.csv.new文件中(您可以选择删除“.new”扩展名,但它将覆盖旧文件):

注意,这可能会重新排列您的csv文件。您没有指定这是否是一个问题。如果是,您可以对dict进行排序或使用OrderedDict。有关更多信息,请参见此处:

假设您有一个名为
file.csv
的文件,该文件如下所示:

from tempfile import mkstemp
from os import close
from shutil import move

def update(filename, name, value):
    fd, path = mkstemp()
    with open(path,'w') as tmpfile:
        with open(filename) as csv:
            for line in cvs:
                if line.startswith(name):
                    tmpfile.write(",".join([name,value]))
                else:
                    tmpfile.write(line)
    close(fd)
    move(path, filename)
Col1,Col2
entry1,timestamp1
entry2,timestamp2
您可以像这样使用csv库来修改任何条目并将其粘贴到新的.csv.new文件中(您可以选择删除“.new”扩展名,但它将覆盖旧文件):

注意,这可能会重新排列您的csv文件。您没有指定这是否是一个问题。如果是,您可以对dict进行排序或使用OrderedDict。有关更多信息,请参见此处:

可能检查模块
pandas
和函数
read_csv
write_csv
?可能检查模块
pandas
和函数
read_csv
write_csv
?这需要将整个文件读取到内存中,这可能是一个问题(在任何情况下都是不必要的)。我在第一个文件_dict={}中发现上述解决方案的语法错误。这是因为它是函数的第三部分吗?它以def updatemings()开始:ask=messagebox.askquestion('Validation','you real you want update timings?')如果ask='yes':请尝试:newv5ctiming=float(newv5c.get())newv62timing=float(newv62.get())newdisptiming=float(newdisp.get())csv\u file=“timings.csv”计时\u list=[]前几个步骤工作正常,但是当它碰到文件\u dict={}时会出现语法。您遇到了什么错误?您可能需要查找它,或者发布另一个溢出问题(如果这里没有)。这需要将整个文件读取到内存中,这可能是一个问题(在任何情况下都是不必要的)。我在第一个文件_dict={}时发现上述解决方案的语法错误。这是因为它是函数的第三部分吗?它以def updatemings()开始:ask=messagebox.askquestion('Validation','you real you want update timings?')如果ask='yes':请尝试:newv5ctiming=float(newv5c.get())newv62timing=float(newv62.get())newdisptiming=float(newdisp.get())csv\u file=“timings.csv”计时\u list=[]前几个步骤工作正常,但是当它碰到文件\u dict={}时会出现语法。您遇到了什么错误?您可能需要查找它,或者发布另一个溢出问题(如果这里还没有)。这是一个不错的迭代解决方案,尽管OP可能希望使用
csv
模块来读取和写入文件,因为它可以轻松处理现实世界中存在的多种csv文件格式。这是一个不错的迭代解决方案,尽管OP可能希望使用
csv
模块来读取和写入文件,因为它可以轻松处理现实世界中存在的多种csv文件格式方言。