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

如何用Python将爬取的陌生格式文本转换为DataFrame?

Python解析特殊格式文本生成DataFrame的最优方法

问题场景

你从浏览器爬取到一段非标准格式的文本:

({:a 186, :b 4, :c "l", :a 6, :b 93, :c "e"})

需要将其转换为结构如下的DataFrame:

a   b  c
0  186   4  l
1    6  93  e

最优实现方案

通过文本清洗、键值对提取、分组构建的方式实现,逻辑清晰且扩展性强:

import pandas as pd

# 原始爬取文本
raw_text = '({:a 186, :b 4, :c "l", :a 6, :b 93, :c "e"})'

# 1. 清洗文本:去除首尾括号、替换转义引号、拆分键值项
cleaned_items = raw_text.strip('()').replace('"', '"').split(', ')

# 2. 提取并处理键值对
key_value_list = []
for item in cleaned_items:
    # 拆分键和值(只按第一个空格分割,避免值含空格的情况)
    key, value = item.split(maxsplit=1)
    # 去除键前的冒号
    key = key.lstrip(':')
    # 去除值的引号,尝试转换为数字类型
    value = value.strip('"')
    if value.isdigit():
        value = int(value)
    key_value_list.append((key, value))

# 3. 确定列名(取第一组的键,假设每行键顺序一致)
column_names = [pair[0] for pair in key_value_list[:3]]
# 按列数分组,每组对应一行数据
row_dicts = [dict(key_value_list[i:i+len(column_names)]) 
             for i in range(0, len(key_value_list), len(column_names))]

# 4. 生成DataFrame
df = pd.DataFrame(row_dicts)
print(df)

方案优势

  • 适配转义字符:处理了爬取文本中的"转义引号,保证文本值正确提取
  • 类型自动转换:将数字字符串转为整数类型,避免DataFrame全是字符串格式
  • 扩展性强:只要每行的键顺序和数量一致,不管列数多少都能自动适配
  • 逻辑可调试:每一步操作独立,方便后续修改以适配类似的非标准文本格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:17:42