You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:44:58