You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python写入CSV文件时如何为文本添加填充?

解决CSV写入时的文本格式化问题

嘿,我明白你在把考勤数据写入CSV时遇到格式化的麻烦了——别慌,咱们用Python的标准csv模块就能轻松搞定,而且能让输出的CSV既规整又符合需求。

先看看你的考勤数据结构:是一个字典列表,每个字典对应一个学生的考勤记录,包含姓名、学号和日期考勤状态。你可能遇到的格式化需求大概是这几种:列文本对齐、修复截断的字段(比如你示例里的FIRST_NAME_3 LAST_NAM...)、统一考勤状态的显示格式,对吧?

下面给你分步解决的方案:

1. 先修复数据中的截断字段

如果你的原始数据里有像FIRST_NAME_3 LAST_NAM...这种截断的名字,先在写入前补全或者处理好,避免写入不完整的内容:

# 补全截断的字段,确保数据完整
attendance = [
    {'NAME': 'FIRST_NAME_1 LAST_NAME_1', 'ROLL NUMBER': '1XXXXXXXXX', '29/04/2018': 'PRESENT', '30/04/2018': 'ABSENT', '01/05/2018': 'PRESENT'},
    {'NAME': 'FIRST_NAME_2 LAST_NAME_2', 'ROLL NUMBER': '2XXXXXXXXX', '29/04/2018': 'PRESENT', '30/04/2018': 'PRESENT', '01/05/2018': 'PRESENT'},
    {'NAME': 'FIRST_NAME_3 LAST_NAME_3', 'ROLL NUMBER': '3XXXXXXXXX', '29/04/2018': 'ABSENT', '30/04/2018': 'ABSENT', '01/05/2018': 'PRESENT'}
]

2. 用csv.DictWriter写入并格式化文本

csv.DictWriter是处理字典列表数据的绝佳工具,它能自动匹配表头和字段,还能配合字符串格式化方法让输出更规整:

import csv

output_file = 'file.csv'
# 从第一个字典中提取所有字段名作为CSV表头
fieldnames = attendance[0].keys()

with open(output_file, 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    
    # 先写入表头
    writer.writeheader()
    
    # 逐行处理并写入数据
    for record in attendance:
        # 姓名左对齐,固定30字符宽度,不足用空格填充(纯文本下更整齐)
        formatted_name = record['NAME'].ljust(30)
        # 学号右对齐,固定12字符宽度,方便对齐查看
        formatted_roll = record['ROLL NUMBER'].rjust(12)
        # 考勤状态统一大写(可选,确保格式一致)
        formatted_attendance = {
            date: status.upper() 
            for date, status in record.items() 
            if date not in ['NAME', 'ROLL NUMBER']
        }
        
        # 组装格式化后的记录
        formatted_record = {
            'NAME': formatted_name,
            'ROLL NUMBER': formatted_roll,
            **formatted_attendance
        }
        
        writer.writerow(formatted_record)

关键格式化技巧说明

  • 文本对齐:用ljust()(左对齐)、rjust()(右对齐)或center()(居中)固定字段宽度,这样不管是用文本编辑器还是Excel打开CSV,列都会更整齐。
  • 统一格式:比如把考勤状态统一为大写/小写,避免出现Present、present这种不一致的写法。
  • 自动处理特殊字符:如果你的姓名里包含逗号、引号等特殊字符,csv模块会自动用引号包裹字段,不用担心CSV分隔符混乱的问题。

如果需要自定义分隔符(比如用制表符代替逗号),只需要在初始化DictWriter时加上delimiter='\t'参数就行。

内容的提问来源于stack exchange,提问作者Aadit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:38:17