如何不使用import csv在Python中实现.csv文件的写入
无导入库Python写入CSV文件实现方案
CSV本质是纯文本结构化格式,仅依靠Python内置的文件IO操作即可实现写入,无需依赖任何第三方或标准库模块。
简单场景实现(字段无特殊符号)
如果待写入的字段内容不含英文逗号、双引号、换行符,可直接拼接字符串写入:
# 待写入数据示例 header = ["姓名", "年龄", "专业"] rows = [ ["张三", 18, "计算机科学"], ["李四", 20, "软件工程"], ["王五", 19, "信息安全"] ] # 写入文件逻辑 with open("output.csv", "w", encoding="utf-8") as f: # 写入表头 f.write(",".join([str(col) for col in header]) + "\n") # 逐行写入数据 for row in rows: f.write(",".join([str(col) for col in row]) + "\n")
标准兼容实现(支持特殊字符)
如果字段包含英文逗号、双引号、换行符,需要按照CSV标准规则做转义处理,避免列错位,实现逻辑符合RFC 4180规范:
def escape_csv_field(field): field_str = str(field) # 字段包含特殊符号时需要转义 if "," in field_str or '"' in field_str or "\n" in field_str: # 字段内的双引号替换为两个连续双引号,整体用双引号包裹 return '"' + field_str.replace('"', '""') + '"' return field_str # 包含特殊字符的待写入数据示例 header = ["姓名", "年龄", "个人简介"] rows = [ ["张三", 18, "爱好:编程,跑步"], ["李四", 20, "曾获\"校级编程比赛\"一等奖"], ["王五", 19, "在读\n大二本科生"] ] with open("standard_output.csv", "w", encoding="utf-8") as f: # 写入转义后的表头 f.write(",".join([escape_csv_field(col) for col in header]) + "\n") # 逐行写入转义后的数据 for row in rows: f.write(",".join([escape_csv_field(col) for col in row]) + "\n")
提示:如果生成的CSV需要在Windows系统用Excel打开,将文件打开参数的
encoding="utf-8"修改为encoding="utf-8-sig"即可避免中文乱码问题。
内容的提问来源于stack exchange,提问作者Jake Jackson
相关产品推荐
相关产品推荐

