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

R语言write_delim处理带双引号字符串时出现重复引号如何解决

R使用write_delim写入带双引号字符串时引号重复问题

问题复现

执行以下代码即可复现异常:

regel <- 'string with "double" quotes in it'
uit <- data.frame(regel)

write_delim(uit,"test.file",col_names=FALSE,
            quote = "none")

生成的test.file文件实际内容为:

string with ""double"" quotes in it

即使设置quote = "none"参数,原字符串内的双引号仍被输出为两个连续双引号,和原始内容不符。

原因说明

这是readr包中write_delim及同系列写入函数(write_csv/write_tsv等)的固有逻辑:quote参数仅控制是否给每个字段整体包裹外层双引号,无论该参数设置为何值,函数默认都会对字段内部的双引号做双写转义,因此仅设置quote = "none"无法关闭内部引号的转义行为。

解决方案

  • 方案1:追加escape = "none"参数,关闭所有自动转义逻辑
    调整后的写入代码:
    write_delim(uit,"test.file",col_names=FALSE,
                quote = "none",
                escape = "none")
    
    执行后输出文件内容和原字符串完全一致:string with "double" quotes in it
  • 方案2:使用R基础包的writeLines直接写入原始字符串,跳过分隔符格式化逻辑,适合纯文本写入场景:
    writeLines(uit$regel, "test.file")
    

注意:如果需要输出符合通用规范的CSV/TSV文件,关闭转义会导致文件格式不标准,后续用常规分隔符读取函数解析时可能出现字段错位,仅在明确需要保留原始字符串、不需要兼容标准格式规则时使用上述方案。

内容的提问来源于stack exchange,提问作者Ton de Haan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:18:16