如何读取含双分隔符的CSV并拆分指定列且不影响日期列?
嘿,这个需求很常见,我给你两种实用的解决方案,不管你是用基础的Python标准库还是更高效的pandas都能轻松搞定,而且完全不会破坏第一列的日期格式:
方法一:使用Python标准库csv模块(无需额外安装)
如果你不想安装第三方库,用Python自带的csv模块就能处理,步骤清晰直观:
import csv # 打开原始CSV和要写入的目标CSV文件 with open('input.csv', 'r', newline='', encoding='utf-8') as infile, \ open('output.csv', 'w', newline='', encoding='utf-8') as outfile: # 创建CSV读取器和写入器 reader = csv.reader(infile) writer = csv.writer(outfile) # 处理表头:把最后一列拆分成两个新表头 header = next(reader) new_header = header[:-1] + ['会员编号', '分支机构编号'] writer.writerow(new_header) # 逐行处理数据 for row in reader: # 拆分最后一列的斜杠分隔内容 member_id, branch_id = row[-1].split('/') # 拼接新行:保留前两列(日期和金额),加上拆分后的两列 new_row = row[:-1] + [member_id, branch_id] writer.writerow(new_row)
为什么不会影响日期格式?
因为我们只是原样保留前两列的内容,只对最后一列进行拆分操作,日期列完全不会被修改,原有的2018/01/25格式会完整保留。
方法二:使用pandas(适合大数据量,代码更简洁)
如果你经常处理数据,pandas会让这个操作变得更简单,几行代码就能完成:
import pandas as pd # 读取CSV文件,可指定编码确保中文正常(如果需要) df = pd.read_csv('input.csv', encoding='utf-8') # 拆分最后一列,expand=True会直接把拆分结果变成两个新列 df[['会员编号', '分支机构编号']] = df['会员编号/分支机构编号'].str.split('/', expand=True) # 删除原来的合并列 df = df.drop(columns=['会员编号/分支机构编号']) # 保存到新CSV,index=False避免生成额外的索引列 df.to_csv('output.csv', index=False, encoding='utf-8')
关于日期格式的说明
pandas默认会尝试识别日期列,如果你的日期格式是标准的YYYY/MM/DD,它会自动把第一列识别为datetime类型;如果你想强制保留字符串格式,只需要在读取时加上dtype={'付款日期': str}参数即可:
df = pd.read_csv('input.csv', dtype={'付款日期': str}, encoding='utf-8')
这两种方法都能完美解决你的问题,根据自己的需求选就行~
内容的提问来源于stack exchange,提问作者Fortune Dludla
相关产品推荐
相关产品推荐

