使用Python批量转换TSV到CSV遇解析错误及路径保存问题
批量转换TSV到CSV的问题解决
一、解决解析报错问题
你遇到的ParserError是因为部分TSV行的字段数量和表头行不匹配,pandas默认严格按表头列数解析,所以触发报错。可以通过以下方式处理:
- 若允许跳过格式异常的行,在
read_table中添加on_bad_lines='skip'参数; - 若文件本身没有固定表头,加上
header=None让pandas自动为列编号。
二、保存到单独文件夹
需要先创建目标文件夹(避免因文件夹不存在报错),再提取原TSV的文件名,拼接成目标CSV的路径,确保转换后的文件单独存放且不覆盖原文件。
修改后的完整代码
import pandas as pd import glob import os # 定义原TSV文件夹和目标CSV文件夹路径 tsv_dir = 'C:/Users/user/Documents/Data/' csv_dir = 'C:/Users/user/Documents/Converted_CSV/' # 创建目标文件夹,已存在则不执行创建操作 os.makedirs(csv_dir, exist_ok=True) # 遍历所有TSV文件 for tsv_path in glob.glob(os.path.join(tsv_dir, '*.tsv')): # 提取纯文件名(不含路径和后缀) filename = os.path.splitext(os.path.basename(tsv_path))[0] # 拼接目标CSV文件的完整路径 csv_path = os.path.join(csv_dir, f'{filename}.csv') try: # 读取TSV文件,跳过格式异常的行;若文件无表头,添加header=None参数 df = pd.read_table(tsv_path, sep='\t', on_bad_lines='skip') # 保存为CSV文件,不保留索引列 df.to_csv(csv_path, index=False) print(f'转换完成:{filename}.tsv -> {filename}.csv') except Exception as e: print(f'转换{filename}.tsv失败:{str(e)}')
关键代码说明
os.makedirs(csv_dir, exist_ok=True):确保目标文件夹存在,无需手动提前创建;os.path.splitext(os.path.basename(tsv_path))[0]:精准提取文件名,保证CSV文件和原TSV文件名一一对应;- 若想查看格式异常的行信息,可将
on_bad_lines='skip'改为on_bad_lines='warn',控制台会输出错误行的详情。
内容的提问来源于stack exchange,提问作者DSharp7476
相关产品推荐
相关产品推荐

