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

求助:将文件夹中RTF文件转为带文件名列的CSV(代码问题)

问题解决:RTF文本按行拆分存入CSV并添加文件名列

原代码存在以下核心问题:

  • 函数getFiles中第二个return FileNames永远无法执行,且遍历RTF文本的方式错误(遍历每个字符),导致重复添加整段文本
  • 错误地将RTF文本内容传入os.path.basename(),应该传入文件路径获取文件名
  • 未按换行符拆分RTF文本,导致所有内容集中在一个单元格
  • DataFrame创建语法错误,且两次调用getFiles()导致重复数据

修正后的代码如下:

import pandas as pd
import os
from striprtf.striprtf import rtf_to_text

dir_path = r'C:\Users\mairi\Desktop\testing txt to excel\\'
new_path = r'C:\Users\mairi\Desktop\testing txt to excel\NEW\Data.csv'

def process_rtf_files():
    records = []
    for filename in os.listdir(dir_path):
        file_path = os.path.join(dir_path, filename)
        # 仅处理文件,跳过子目录
        if not os.path.isfile(file_path):
            continue
        # 读取并转换RTF为纯文本
        with open(file_path, 'r', encoding='utf-8') as file:
            rtf_content = file.read()
            plain_text = rtf_to_text(rtf_content)
            # 按换行拆分文本,过滤空行
            lines = [line.strip() for line in plain_text.split('\n') if line.strip()]
            # 为每行数据绑定对应文件名
            for line in lines:
                records.append({'Filename': filename, 'Data': line})
    return records

# 生成数据并保存为CSV
data_records = process_rtf_files()
df = pd.DataFrame(data_records)
df.to_csv(new_path, index=False, header=True)

关键修正说明:

  • 用记录列表存储「文件名+对应行」的组合,确保每行数据对应一条独立记录
  • 按\n拆分转换后的纯文本,同时过滤空行避免无效数据
  • 直接使用遍历到的filename作为文件名列的值,修正原代码的文件名获取逻辑
  • 修复DataFrame创建逻辑,确保列名与数据匹配
  • 仅调用一次处理函数,避免重复获取数据

执行后将生成符合预期格式的CSV:

FilenameData
Filename_1Data line 1
Filename_1Data line 2
Filename_2Data line 1
Filename_2Data line 2
Filename_2Data line 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:25:22