如何在csv文件的每一行中写入一个值?

2024-06-08 20:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用循环为csv文件的每一行计算一个值,并希望将该值作为每一行中的新列写入。你知道吗

我打开文件:

with open('hello.csv', 'r', encoding="latin-1") as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    list1 = list(readCSV)

然后遍历行并计算一个新值:

for j in list1:
    dt=j[1]
    dt2=dt+1

如何将每行“j”中的dt2作为现有csv文件中的新列写入你好.csv"? 你知道吗

Copy from comment:

这只是一个简单的例子。我已将数据时间对象转换为正确的时区:

dtstr=j[1] #string 
hours, minutes = [int(t) for t in tstr.split(':')] 
dt = datetime.strptime(dtstr, '%Y-%m-%d %H:%M:%S') + 
              timedelta(hours=hours+4, minutes=minutes)

Tags: 文件csvcsvfileinhelloforwithdt
2条回答

使用python csv模块,在outfile中创建一个新列并写入行,新列表中添加了new_column_value。你知道吗

with open('hello.csv', 'r', encoding="latin-1") as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    with open('helloout.csv', 'w', encoding="latin-1") as outfile:
        outCSV = csv.writer(outfile,delimiter=',')
        for line in readCSV:
            new_column_value = func(line[j]) # Your modification function j column number
            new_line = line + [new_column_value]
            outCSV.writerow(newline)
 with open('hello.csv', 'r', encoding="latin-1") as csvfile:
          readCSV = csv.reader(csvfile, delimiter=',')
          list1 = list(readCSV)
          for j in list1:
              dtstr=j[1] #string
              hours, minutes = [int(t) for t in tstr.split(':')]
              dt = datetime.strptime(dtstr, '%Y-%m-%d %H:%M:%S')         +timedelta(hours=hours+4, minutes=minutes)
              with open('hello out.csv', 'w', encoding="latin-1") as outfile:
                    outCSV = csv.writer(outfile,delimiter=',')
                    newline = j + [dt]
                    outCSV.writerow(newline)

我只会变成一个csv文件你好.csv只有一行,那是文件的最后一行你好.csv与新列一起。我想它会覆盖行,但我不知道为什么?你知道吗

相关问题 更多 >