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

如何在R语言中使用gsub替换单引号为双引号并避免转义?

解决单引号JSON转双引号后的解析问题

问题本质

你看到的双引号转义(\")只是R控制台的显示格式,实际字符串中并没有反斜杠——这是R用来区分字符串边界的机制,完全不影响后续JSON解析操作。

分步解决方案

  1. 验证真实字符串内容
    用cat()函数查看替换后的实际内容,就能看到双引号是正常无转义的:

    content <- "{'response': {'page': 1, 'size': None, 'data': [1,2,3]}}"
    content2 <- gsub("'", '"', content)
    cat(content2) # 输出:{"response": {"page": 1, "size": None, "data": [1,2,3]}}
    
  2. 修复JSON规范问题
    原内容里的None不符合JSON标准,必须替换为null,否则解析仍会失败:

    content2 <- gsub("None", "null", content2)
    
  3. 解析JSON内容
    用jsonlite包的fromJSON()函数直接解析即可,无需在意控制台显示的转义:

    library(jsonlite)
    result <- fromJSON(content2)
    # 查看解析后的结构化数据
    str(result)
    

特殊场景处理

如果文本里存在单引号嵌套(比如字符串值中包含单引号),全局替换单引号会破坏内容,这时可以用正则只替换键名周围的单引号:

# 仅将 'key' 格式的键名替换为 "key"
content2 <- gsub("'(\\w+)'", '"\\1"', content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:45:38