You need to enable JavaScript to run this app. 使用csv.writer写入字符串序列时行列输出异常如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用csv.writer写入字符串序列时行列输出异常如何解决

问题原因

你代码中的site_tree_info是单个字符串类型,而非存储所有待写入字符串的列表。当你对字符串执行for item in site_tree_info遍历时,每次取出的item是字符串中的单个字符,自然会出现写入结果不符合预期的情况。
此外你当前的提取逻辑中,每次处理一个PDF文件就会给site_tree_info重新赋值,之前PDF提取的内容会被直接覆盖,也会导致最终写入的数据不全。

修复步骤
  1. 先初始化一个全局列表存储所有提取到的信息,避免内容被覆盖
  2. 调整CSV写入逻辑,避免遍历单个字符串,同时添加newline=''参数避免Windows系统下生成的CSV出现多余空行
完整修正代码
import os
import re
import csv
import pdfplumber

meta_sample = re.compile(r'^[A-Z].*') 
# 初始化列表存储所有提取结果
all_site_tree_info = []

# 提取PDF内容逻辑
for root, dirs, files in os.walk('/Users/myname/tree'):
    for filename in files:
        p = os.path.join(root, filename)
        with pdfplumber.open(p) as pdf:
            sample_info = pdf.pages[0]
            sample_info_text = sample_info.extract_text()   
            sample_info_text_split = sample_info_text.split('\n')
        
        # 原有匹配逻辑保留不修改
        for lines in sample_info_text_split: 
            if meta_sample.match(lines):
                column_name, *column_info = lines.split(':')
                column_info = ' '.join(column_info)
        
        # 提取当前PDF的站点树信息,加入全局列表
        site_tree_info = sample_info_text_split[2].strip().split(":", 1)[1].strip()
        all_site_tree_info.append(site_tree_info)

# 统一写入CSV
with open("output.csv", mode="w", newline='', encoding='utf-8-sig') as fp:
    wr = csv.writer(fp, dialect="excel")
    for item in all_site_tree_info:
        wr.writerow([item])

如果需要追加写入而非覆盖原有CSV,只需将写入部分的mode="w"修改为mode="a+"即可。

内容的提问来源于stack exchange,提问作者Todd D. Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 11:45:06