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
相关产品推荐
相关产品推荐

