我使用循环计算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文件“hello.csv”中的新列?
复制评论:
这只是一个简单的例子。我已将数据时间对象转换为正确的时区:
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)
使用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文件helloout.csv,这是带有新列的文件hello.csv的最后一行。我认为它会覆盖行但我不明白为什么?