如何在R中清理非JSON内容后使用fromJSON解析数据
解决R中解析包裹在函数调用内的JSON数据问题
你可以通过字符串处理先剥离前缀product_id.datahandler(和后缀),再用fromJSON解析。以下是具体实现方法:
基础R实现(无需额外包)
# 加载jsonlite包(fromJSON来自这个包) library(jsonlite) # 假设你的原始数据已存为字符串变量raw_text raw_text <- 'product_id.datahandler({"ID": [], "ProductName": ["Marbel Mabel"], "Description": ["pearl white, natural marbel"]})' # 移除前缀 cleaned_json <- sub("^product_id\\.datahandler\\(", "", raw_text) # 移除后缀 cleaned_json <- sub("\\)$", "", cleaned_json) # 解析JSON parsed_data <- fromJSON(cleaned_json)
使用stringr包(更简洁)
如果你习惯用tidyverse工具链,stringr的字符串处理更直观:
library(jsonlite) library(stringr) raw_text <- 'product_id.datahandler({"ID": [], "ProductName": ["Marbel Mabel"], "Description": ["pearl white, natural marbel"]})' # 一次性移除前后的包裹内容 cleaned_json <- str_remove_all(raw_text, "^product_id\\.datahandler\\(|\\)$") # 解析JSON parsed_data <- fromJSON(cleaned_json)
从文件读取并处理
如果数据保存在文本文件中,先读取再清理:
library(jsonlite) library(stringr) # 读取文件内容并合并为单个字符串(避免多行拆分问题) raw_text <- readLines("your_data_file.txt", warn = FALSE) %>% paste(collapse = "") # 清理并解析 cleaned_json <- str_remove_all(raw_text, "^product_id\\.datahandler\\(|\\)$") parsed_data <- fromJSON(cleaned_json)
正则说明
^product_id\\.datahandler\\(:匹配字符串开头的product_id.datahandler(,其中\\.和\\(是转义后的特殊字符,确保匹配字面量\\)$:匹配字符串结尾的)
内容的提问来源于stack exchange,提问作者Kusisi Karem
相关产品推荐
相关产品推荐

