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

如何用正则表达式解码加密字符串并生成DataFrame?

处理固定格式用户数据生成DataFrame

思路

先过滤出以AN04N01开头的有效行,剔除开头7位标识后,按照字段规则提取name、surname、DOB,最后组装成DataFrame。

方法一:正则表达式提取

利用正则捕获组直接匹配目标字段内容,代码简洁高效:

import pandas as pd
import re

# 匹配有效行的正则模式,直接捕获三个字段的内容
pattern = re.compile(r'AN04N0101\d{2}(.{5})02\d{2}(.{5})03\d{2}(.{8})')

data = []
# 替换为你的实际数据文件路径
with open('user_data.txt', 'r') as f:
    for line in f:
        line = line.strip()
        match_result = pattern.match(line)
        if match_result:
            data.append({
                'name': match_result.group(1),
                'surname': match_result.group(2),
                'DOB': match_result.group(3)
            })

# 生成DataFrame
df = pd.DataFrame(data)
print(df)

方法二:按规则逐段解析(适配字段变化)

如果后续字段长度、顺序可能调整,这种方法扩展性更强:

import pandas as pd

data = []
with open('user_data.txt', 'r') as f:
    for line in f:
        line = line.strip()
        if not line.startswith('AN04N01'):
            continue
        # 去掉开头的7位标识
        content = line[7:]
        user_info = {}
        current_idx = 0
        while current_idx < len(content):
            # 提取列标识(前2位)
            col_id = content[current_idx:current_idx+2]
            # 提取内容长度(接下来2位)
            content_len = int(content[current_idx+2:current_idx+4])
            # 提取对应长度的内容
            value = content[current_idx+4:current_idx+4+content_len]
            # 映射到列名
            if col_id == '01':
                user_info['name'] = value
            elif col_id == '02':
                user_info['surname'] = value
            elif col_id == '03':
                user_info['DOB'] = value
            # 移动索引到下一个字段起始位置
            current_idx += 4 + content_len
        data.append(user_info)

df = pd.DataFrame(data)
print(df)

说明

  • 方法一适合字段规则固定的场景,代码更简洁;方法二能应对字段顺序、长度变更的情况,灵活性更高。
  • 记得把代码中的user_data.txt替换为你的实际数据文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:01:55