如何用Python将竖线分隔文本转为列独立CSV?Python2.7实现求助
解决Python 2.7下竖线分隔文本转CSV的问题
嘿,我看到你遇到的问题了——你的代码没达到预期效果,核心原因是没有告诉pandas要用竖线作为分隔符!pd.read_csv()默认是用逗号分隔内容的,所以你的竖线分隔文本会被当成一整列读入,自然输出的CSV也不对。下面给你适配Python 2.7的解决方案:
用Pandas修正的代码
直接修改read_csv的参数,指定分隔符为竖线,同时调整导出参数避免多余的索引列:
import pandas as pd import easygui import os def convert(): file = easygui.fileopenbox() # 指定竖线作为分隔符,如果竖线后有空格,加上skipinitialspace=True去除空格 data = pd.read_csv(file, header=None, sep='|', skipinitialspace=True) # 确保输出目录存在,避免路径错误 output_dir = r'C:\Users\micha\Desktop\Python Tools' if not os.path.exists(output_dir): os.makedirs(output_dir) # 导出为CSV,去掉索引列,保持无表头(和原文件一致) data.to_csv(os.path.join(output_dir, 'output.csv'), index=False, header=False) # 直接调用函数,不需要print(函数没有返回值) convert()
原生Python替代方案(不依赖Pandas)
如果你的Python 2.7环境安装Pandas有麻烦,也可以用内置的csv模块来处理,更轻量:
import easygui import csv import os def convert(): input_file = easygui.fileopenbox() output_dir = r'C:\Users\micha\Desktop\Python Tools' # 确保输出目录存在 if not os.path.exists(output_dir): os.makedirs(output_dir) output_path = os.path.join(output_dir, 'output.csv') # 读取竖线分隔的文件,写入标准CSV with open(input_file, 'r') as infile, open(output_path, 'w') as outfile: # 指定竖线为输入分隔符 reader = csv.reader(infile, delimiter='|') writer = csv.writer(outfile) for row in reader: # 去除每个字段前后的空格(如果有需要的话) cleaned_row = [item.strip() for item in row] writer.writerow(cleaned_row) convert()
额外注意事项
- 编码问题:如果你的输入文件包含中文或特殊字符,Python 2.7的
open默认编码可能不兼容,这时候可以改用codecs模块来读取:import codecs # 替换原有的open语句 with codecs.open(input_file, 'r', 'utf-8') as infile: - 表头处理:如果你的原文件有表头,记得把
header=None改成header=0(Pandas方案),或者在原生方案中保留第一行作为表头。
内容的提问来源于stack exchange,提问作者user5438246
相关产品推荐
相关产品推荐

