【问题标题】:How to remove "\" from paste function output with quotation marks?如何从带引号的粘贴函数输出中删除“\”?
【发布时间】:2021-03-11 00:30:46
【问题描述】:

我正在使用以下代码:

Y_Columns <- c("Y.1.1")

paste('{"ImportId":"', Y_Columns, '"}', sep = "")

粘贴函数产生以下输出:

"{\"ImportId\":\"Y.1.1\"}"

如何让粘贴功能省略\?这样,输出为:

"{"ImportId":"Y.1.1"}"

感谢您的帮助。

【问题讨论】:

  • 该 string.character 值中没有反斜杠。您很困惑,因为 R 使用反斜杠作为转义字符。您要求在结果中添加双引号字符,而使用默认 printoutput 明确表示它们的唯一方法是转义它们。
  • 有趣。所以当我看到一个反斜杠时,字符串中实际上没有一个?什么是转义字符?
  • 对。搜索 SO 不是很有成效,但搜索谷歌是:en.wikipedia.org/wiki/Escape_character
  • 使用 cat 将显示实际字符串:cat(paste('{"ImportId":"', Y_Columns, '"}', sep = ""))

标签: r string paste


【解决方案1】:

注意:我确实在 SO 上进行了搜索,看看是否有任何 Q 询问“R 中的转义字符是什么”。但我没有查看所有 160 个答案,只查看了前 20 个。

这是展示我在评论中所写内容的一种方式:

 out <- paste('{"ImportId":"', Y_Columns, '"}', sep = "")
 out
#[1] "{\"ImportId\":\"Y.1.1\"}"
 ?print
 print(out,quote=FALSE)
#[1] {"ImportId":"Y.1.1"}

R 和正则表达式模式都使用转义字符来允许在打印输出或输入中显示特殊字符。 (有时正则表达式模式需要双倍转义。)R 有一些字符在某些情况下需要“转义”。您说明了一种这样的情况:在结果中包含双引号字符,该字符将与周围的双引号一起打印。如果您打算在创建时由单引号分隔的字符值中包含任何单引号,那么它们也需要被转义。

out2 <- '\'quoted\''
nchar(out2)
#[1] 8   ... note that neither the surround single-quotes nor the backslashes get counted
> out2
[1] "'quoted'"  ... and the default output quote-char is a double-quote.

这是一个很好的问答:How to replace '+' using gsub() function in R

它有两个答案,都很有用:一个显示如何对特殊字符进行双重转义,另一个显示如何使用固定参数来绕过该要求。

关于处理 Windows 路径的主题还有另一个可能有用的问答: File path issues in R using Windows ("Hex digits in character string" error)

还有一些更有用的阅读建议:查看以大写字母开头的系列帮助页面。 (因为我不记得哪个有哪些基本信息,我首先尝试了?Syntax,它有一个“另见”的基本阅读列表:Arithmetic, Comparison, Control, Extract, Logic, NumericConstants, Paren, Quotes, Reserved. 然后我意识到我最想推荐给你的是可能是?Quotes,其中应列出所有 R 特定的转义序列字母。

【讨论】:

    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 2021-10-06
    • 2014-03-19
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2015-09-28
    • 2014-02-17
    相关资源
    最近更新 更多