csv.writer向上一学期添加引号以及额外的行,即使换行=“”

2024-10-04 05:20:23 发布

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

在回答这个问题之前,先声明我的python3代码使用的是newline=''(这是对类似问题的回答),但是行为是持久的

这段代码从一个非常大的逗号分隔的文本文件中读入数据,将一天缓冲到一个列表中,然后将该列表写入一个csv文件。我在这行的末尾发现了一个奇怪的行为:

源数据:

“27/56/4382”,“81:00:00”,“5464.4”,“5464.4”,“5464.4”,“3\r\n”
“27/56/4382”,“81:00:00”,“5464.4”,“5464.4”,“5464.4”,“3\r\n”

输出如下:

“27/56/4382”,“81:00:00”,“5464.4”,“5464.4”,“5464.4”,“3

“27/56/4382”,“81:00:00”,“5464.4”,“5464.4”,“5464.4”,“3
““

代码:

with open(readfilepath,newline='') as f:
for line in f:
        date1 = date2 # set date1 to date2 so don't get kicked out
        purchline= line # grab line
        parsedline = purchline.split(",") # split up line record
        date2 = parsedline[0] # grab date 2
        if (date1 == date2): # if day hasn't flipped, continue to build buffer
            daybuffer.append(parsedline)
        else:  # day has flipped.  write buffer to file, clear buffer, then append this line (don't lose line!)
            # create writefilepath
            writedate = datetime.datetime.strptime(date1,"%M/%d/%Y").strftime("%Y%M%d")
            writefilename = "poa" + writedate + "purRaw.txt"
            writefilepath = writedirectorypath + writefilename

            # write daybuffer to csvfile
            with open(writefilepath,'w',newline='') as writecsv:
                purchwriter = csv.writer(writecsv)
                purchwriter.writerows(daybuffer)

            # wipe out daybuffer
            del(daybuffer[:])
            # add last line to daybuffer
            daybuffer.append(parsedline)
            print("The day hath flipped.")

Tags: to数据代码列表bufferlinenewlineday