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

Python正则表达式:按dd mmm yyyy日期分割并保留第二次匹配后内容

解决方案

正则提取+DataFrame转换

直接用正则精准定位第二次日期后的内容,再拆分整理成目标结构的DataFrame:

代码实现

import re
import pandas as pd

input_list = ['01 Feb 2023 CNY  0.00  559,929.32 **01 Feb 2023 CNY  0.00  0.00**',
 '01 Feb 2023 HKD  0.00  22,441,926.65 **01 Feb 2023 HKD  0.00  0.00**',
 '01 Feb 2023 USD  0.00  585,686.14 **01 Feb 2023 USD  0.00  0.00**']

# 正则匹配第二次日期及后续被**包裹的内容
pattern = r'.*\*\*(\d{2} \w{3} \d{4} .*?)\*\*'
processed_data = []

for line in input_list:
    match_result = re.search(pattern, line)
    if match_result:
        # 按多个空格拆分内容,避免产生无效空值
        split_parts = re.split(r'\s{2,}', match_result.group(1).strip())
        processed_data.append(split_parts)

# 生成DataFrame并处理金额格式
df = pd.DataFrame(processed_data, columns=['日期', '币种', '金额1', '金额2'])
df['金额1'] = df['金额1'].str.replace(',', '').astype(float)
df['金额2'] = df['金额2'].str.replace(',', '').astype(float)

print(df)

关键细节

  • 正则.*\*\*(\d{2} \w{3} \d{4} .*?)\*\*:先跳过第一次日期到**前的所有内容,精准捕获第二次日期开始到结束**前的目标片段。
  • 用re.split(r'\s{2,}', ...)处理原字符串里的多个空格分隔,避免拆分出无效空字符串。
  • 去除金额里的逗号并转成数值类型,方便后续计算或分析。

输出结果

日期  币种  金额1  金额2
0  01 Feb 2023 CNY   0.0   0.0
1  01 Feb 2023 HKD   0.0   0.0
2  01 Feb 2023 USD   0.0   0.0

内容的提问来源于stack exchange,提问作者zeuzzz_m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:40:29