簡體   English   中英

如何在csv文件的每一行中寫入一個值?

[英]How to write a value in each row of a csv file?

我使用循環為 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

如何在現有 csv 文件“hello.csv”中的每一行“j”中寫入 dt2 作為新列?

從評論復制:

這只是一個簡單的例子。 我已將數據時間對象轉換為正確的時區:

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 的最后一行。 我認為它會覆蓋行,但我不知道為什么?

暫無
暫無

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

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