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

如何在R中读取CSV列存储的Python OrderedDict格式数据

R中读取Python OrderedDict序列化字符串的方法

你给出的字符串是Python的OrderedDict序列化结果,可通过以下两种方法解析:

方法1:调用Python解析(推荐,兼容性最高)

无需处理复杂正则,直接调用Python的collections.OrderedDict解析原始字符串,仅需要本地安装有Python环境:

  1. 先安装依赖包
install.packages(c("reticulate", "readr"))
  1. 解析代码
library(reticulate)
library(readr)

# 读取原始CSV文件
df <- read_csv("你的CSV文件路径.csv")

# 定义解析函数
parse_orddict <- function(py_str) {
  py_run_string(sprintf("from collections import OrderedDict; res = %s", py_str))$res
}

# 批量解析A列所有字符串
parsed_results <- lapply(df$A, parse_orddict)

取值示例

# 取第一个解析结果的YTC下的V值
parsed_results[[1]]$YTC$V # 输出 "B1"
# 取TA字段值
parsed_results[[1]]$TA # 输出 "80"
# 取TL列表中第二个元素的Pe值
parsed_results[[1]]$TL[[2]]$Pe # 输出 "90"

方法2:转JSON解析(无需Python环境)

通过正则替换把Python结构转成标准JSON格式,再用JSON解析工具读取:

  1. 安装依赖包
install.packages(c("jsonlite", "stringr", "readr"))
  1. 解析代码
library(jsonlite)
library(stringr)
library(readr)

df <- read_csv("你的CSV文件路径.csv")

parse_orddict_json <- function(py_str) {
  processed <- py_str |>
    # 移除所有OrderedDict标识
    str_remove_all("OrderedDict\\(") |>
    # 把Python元组的小括号替换为JSON数组的方括号
    str_replace_all("\\(", "[") |>
    str_replace_all("\\)", "]") |>
    # 移除最外层多余的方括号
    str_remove("^\\[") |>
    str_remove("\\]$") |>
    # 把键值对数组转为JSON对象格式
    str_replace_all("\\['([^']+)',\\s*([^\\]]+)\\]", "\"\\1\": \\2") |>
    str_replace_all("\\[\\s*(\".+?\"\\s*:.+?)\\s*\\]", "{\\1}")
  return(fromJSON(processed))
}

parsed_results <- lapply(df$A, parse_orddict_json)

结果转结构化表

如果需要把嵌套结果展开为二维数据框,可使用如下代码:

library(tidyr)
library(dplyr)

structured_df <- lapply(parsed_results, function(item) {
  # 提取第一层基础字段
  base_info <- tibble(YTC_V = item$YTC$V, TA = item$TA)
  # 展开TL嵌套列表
  tl_info <- lapply(item$TL, function(tl_item) {
    tibble(TC_V = tl_item$TC$V, TC_SD = tl_item$TC$SD, Pe = tl_item$Pe)
  }) |> bind_rows()
  # 合并字段
  return(bind_cols(base_info, tl_info))
}) |> bind_rows()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:04