csv writer在每行周围放置引号

qui*_*are 4 python csv merge double-quotes

我正在尝试将具有相同格式的多个csv文件合并为一个.

merge_list = glob.glob(gndlbsum+"*gndlbsum.csv")
filewriter_lbsum = target_dir+"gndlbsum_master.csv"

#get the list of csv files and set the output file
counter=0
for file in merge_list:
    with open(file,"rU") as csv_file:
        filereader = csv.reader(csv_file)
        with open(filewriter_lbsum,"a") as f:
            writer = csv.writer(f, delimiter = "|")
            #check to see if it's the first file, if it is, add header,
            #otherwise skip first row
            if counter<1:
                for row in filereader:
                    writer.writerow(row)
                    counter+=1
            else:
                header = next(filereader,None)
                for row in filereader:
                    writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,输出csv中的每一行都完全用双引号括起来,我尝试使用list.append(row),但它没有区别,因为行用双引号括起来.有办法避免这种情况吗?

编辑:

以下是源文件的示例:

COL1|COL2|COL3
1|2|3
4|5|6
Run Code Online (Sandbox Code Playgroud)

并输出:

"COL1|COL2|COL3"
"1|2|3"
"4|5|6"
Run Code Online (Sandbox Code Playgroud)

mar*_*eau 5

我认为这将摆脱其正在不说引起了引号的csv.reader创建,在输入文件分隔符s个"|"字符,而不是默认的是","字符.

merge_list = glob.glob(gndlbsum + "*gndlbsum.csv")
file_writer_lbsum = os.path.join(target_dir, "gndlbsum_master.csv")

# Append each csv file in the list to the output file
first_file = True
for file in merge_list:
    with open(file, "rU") as csv_file:
        reader = csv.reader(csv_file, delimiter="|")
        with open(file_writer_lbsum, "w" if first_file else "a") as f:
            writer = csv.writer(f, delimiter="|")
            # Unless it's the first file, skip its header row
            if not first_file:
                next(reader)
                first_file = False
            writer.writerows(reader)
Run Code Online (Sandbox Code Playgroud)