簡體   English   中英

如何使用python重寫CSV中的一行?

[英]How to rewrite a line in a CSV using python?

我的代碼有問題 - 我有一個 csv 文件,我必須將 csv 中的第一行保存為列表。 然后我必須清除文件並使用列表重寫該行。 這是我的代碼:

import csv

f = open('PlateBook.csv','r')
reader = f.readlines()

for row in reader:
    outrow = list(row) 

    with open('PlateBook.csv', 'w', newline='') as fp:
        f.truncate
        a = csv.writer(fp, delimiter=',')
        data =  [outrow]

        a.writerows(data)

問題是,當我在 Excel 中打開 csv 時,它顯然是錯誤的。 每個字符填充一個單元格 - 我希望文件看起來與我編寫文件時完全相同。

從你描述的問題來看,我猜你不想做

outrow = list(row) 

它只是創建了每個字符的列表,但更像是

outrow = row.split(',')

它創建了一個由逗號分隔的字符串列表。

或者,更好的是,使用csv.reader ,這樣它就可以處理引號和 csv 的所有小細節。

這是您應該做什么的未經測試的示例代碼。

import csv

with open('PlateBook.csv','rt') as input_file:
    reader = csv.reader( input_file )
    with open('PlateBook.temp.csv','wt') as output_file:
        writer = csv.DictWriter( output_file, fieldnames = csvreader.fieldnames )
        writer.writeheader()
        for row in reader:
            writer.writerow( row )

#So far we didnot touch the original file, so if the process
#fails, nothing is left in half-processed state.
import os
os.remove( 'PlateBook.csv' )
os.rename( 'PlateBook.temp.csv', 'PlateBook.csv' )

暫無
暫無

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

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