Python CSV Writer写入列表至CSV文件,如何去除[]与引号?
问题:CSV输出内容带[]和引号,如何去除?
现有代码可正常运行并写入数据,但输出结果包含[]和''符号。原代码如下:
above5 = [] with open(path,"r") as file_to_be_read: csv_reader = csv.reader(file_to_be_read) header = next(csv_reader) #print(header) for line in csv_reader: if float(line[7]) >=5: above5.append(line) with open ("Python_Practice/cerealdata.csv", "w") as file_to_be_written: file_to_be_written.write(str(header) + "\n") for x in range(len(above5)): file_to_be_written.write(str(above5[x]) + "\n")
原因分析
问题出在直接用str()把CSV行(列表类型)转成字符串写入文件,列表转字符串时会自动带上[]和元素的引号,导致输出格式错误。
修复方案
改用Python内置的csv.writer来写入文件,它会自动处理CSV格式的分隔、转义,避免多余符号。修改后的代码如下:
import csv # 确保导入csv模块 above5 = [] with open(path,"r") as file_to_be_read: csv_reader = csv.reader(file_to_be_read) header = next(csv_reader) for line in csv_reader: if float(line[7]) >=5: above5.append(line) # 使用csv.writer写入标准CSV格式 with open("Python_Practice/cerealdata.csv", "w", newline='') as file_to_be_written: csv_writer = csv.writer(file_to_be_written) csv_writer.writerow(header) # 写入表头 for row in above5: csv_writer.writerow(row) # 逐行写入数据
关键改动说明
- 必须导入
csv模块(原代码未显式导入时需补充) - 打开写入文件时添加
newline=''参数,避免Windows系统下生成额外空行 - 用
csv.writer的writerow()方法写入数据,自动生成符合规范的CSV格式,不会出现[]和引号
内容的提问来源于stack exchange,提问作者Paul Samaniego
相关产品推荐
相关产品推荐

