导入必要的库
首先导入os和pandas库。os库用于处理文件和目录路径,pandas库则用于数据处理和CSV文件的生成。
定义输入和输出目录路径
指定了存放TXT文件的目录txt_directory和希望输出CSV文件的目录output_file_dir。确保输出目录存在,如果不存在,则使用os.makedirs()加上参数exist_ok=True来创建,避免因目录已存在而引发错误。
定义处理TXT文件并保存为CSV的函数
process_txt_to_csv(txt_path, output_dir)函数接收两个参数:TXT文件的路径和输出CSV文件的目录。
函数内部首先获取TXT文件的基本名称并替换.txt扩展名为.PDF.csv,用于构建输出CSV文件的名称。
之后,逐行读取TXT文件内容,每行作为一个记录,构建包含“页码”、“纯文本”和“位置文本”(这里留空,因为TXT文件不包含位置信息)的字典,并将所有字典添加到一个列表中。
使用pandas.DataFrame()将这个列表转换为DataFrame,然后利用to_csv()方法保存为CSV文件,其中index=False表示不保存索引列,encoding='utf-8-sig'确保CSV文件能够被Excel等软件正确打开,特别是对于包含中文等非ASCII字符的情况。
遍历目录并处理每个TXT文件
使用os.listdir()获取指定TXT目录下的所有文件名,然后通过endswith('.txt')检查文件是否为TXT文件。如果是,就调用前面定义的process_txt_to_csv()函数,处理该TXT文件并将其转换为CSV文件,保存在指定的输出目录中。
代码
import os
import pandas as pd
# 输入TXT文件的目录和输出CSV文件的目录
txt_directory = '/mnt/data/txt_files'
output_file_dir = '/mnt/data/txt2csv_normalized'
# 确保输出目录存在
os.makedirs(output_file_dir, exist_ok=True)
# 处理TXT文件并保存为CSV文件的函数
def process_txt_to_csv(txt_path, output_dir):
txt_name = os.path.basename(txt_path).replace('.txt', '')
output_csv_path = os.path.join(output_dir, f"{txt_name}.PDF.csv")
text_content = []
with open(txt_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
for page_num, line in enumerate(lines):
text_content.append({'页码': page_num, '纯文本': line.strip(), '位置文本': ''})
text_df = pd.DataFrame(text_content)
text_df.to_csv(output_csv_path, index=False, encoding='utf-8-sig')
# 处理目录中的所有TXT文件
for file_name in os.listdir(txt_directory):
if file_name.endswith('.txt'):
txt_path = os.path.join(txt_directory, file_name)
process_txt_to_csv(txt_path, output_file_dir)