如何用Python解析每日投资组合报告日期并移至首列?
解决CSV投资组合报告日期移至第一列的Python实现方案
1. 先定位并提取目标日期
从你的报告情况来看,红色高亮的日期大概率是在CSV文件的开头单独行(比如表头上方),先读取文件内容,把日期提取出来:
import csv import re # 读取原CSV文件 with open('portfolio_report.csv', 'r', encoding='utf-8') as f: all_lines = f.readlines() # 提取日期——这里用正则匹配常见的YYYY-MM-DD格式,可根据你的实际日期格式调整 portfolio_date = None for line in all_lines: date_match = re.search(r'\d{4}-\d{2}-\d{2}', line.strip()) if date_match: portfolio_date = date_match.group() break # 如果没找到日期,直接终止(可根据需求加提示) if not portfolio_date: print("未找到投资组合日期") exit()
2. 调整数据结构,把日期插入第一列
接下来处理所有数据行,给每一行(包括表头)加上日期列:
# 找到数据起始行——跳过日期行,找到真正的表头行 data_start_idx = 0 for idx, line in enumerate(all_lines): if line.strip() and ',' in line: # 假设表头有逗号分隔的列 data_start_idx = idx break # 处理表头 header = all_lines[data_start_idx].strip().split(',') header.insert(0, '投资组合日期') updated_header = ','.join(header) + '\n' # 处理所有数据行 updated_lines = [updated_header] for line in all_lines[data_start_idx+1:]: line = line.strip() if not line: # 跳过空行 continue # 把日期插入行首 updated_line = f"{portfolio_date},{line}\n" updated_lines.append(updated_line)
3. 保存修改后的CSV文件
最后把调整好的内容写入新文件:
with open('updated_portfolio_report.csv', 'w', encoding='utf-8', newline='') as f: f.writelines(updated_lines)
适配不同情况的小技巧
- 如果你的日期格式不是YYYY-MM-DD,修改正则表达式即可(比如匹配
\d{2}/\d{2}/\d{4}格式); - 如果CSV用制表符分隔,把代码里的
','替换成'\t'; - 要是日期行有固定标识(比如开头是“Portfolio Date:”),可以直接用字符串分割提取,不用正则:
for line in all_lines: if line.strip().startswith('Portfolio Date:'): portfolio_date = line.strip().split(':')[-1].strip() break
内容的提问来源于stack exchange,提问作者Sumair Chughtai
相关产品推荐
相关产品推荐

