繁体   English   中英

如何在R中的字符串中存储特殊字符

[英]How to store a special character in a string in R

我试图将特殊转义字符\\作为字符串的一部分存储在 R 中。

x = "abcd\efg"

# Error: '\e' is an unrecognized escape in character string starting ""abcd\e"

x = "abcd\\efg"

# Works

问题是x实际上是我作为 API Web 调用的一部分传递的密码,因此我需要找到一种方法让字符串存储文字单斜杠,以便使其正常工作。

使用忽略文字命令的示例:

> x = r"(abcd\efg)"

> y = "https://url?password="

> paste(x, y, sep = "")
[1] "abcd\\efg123"

> # What I need is for it to return
[1] "abcd\efg123"

> z = paste(y, x, sep = "")

> z
[1] "https://url?password=abcd\\efg"

> cat(z)
https://url?password=abcd\efg

当我将z作为 API 命令的一部分传递时,我收到“错误凭据”消息,因为它将\\\\作为字符串的一部分发送。 cat正确地将它返回到控制台,但它似乎没有像打印回来那样发送它。

就像评论中的其他人所说的那样,该字符串似乎由 R 正确处理。我认为它会成为其他地方的麻烦。 API 或通过匹配软件本身可能会用它做一些事情。

举个例子,如果逐字书写,反斜杠在大多数浏览器中不起作用,您需要使用%5C代替。 是关于它的一个讨论。

所以你的情况-尝试用别的东西代替反斜杠,要么%5C或者如@Roland在评论中提到的,一些额外的反斜杠符号,像\\\\\\\\\\\\\\\\\\ 然后看看它们中的任何一个是否有效。

答案和评论包含解决方案,但为了完整起见,请发布与我的具体情况相匹配的答案。

我的包需要用户提供密码。 如果密码中有\\ ,则命令将失败,如上所述。 解决方案似乎是在输入中处理它,而不是在用户提交密码后尝试更改值。

library(RobinHood)

# If the true password is: abc\def

# The following inputs will all work
rh <- RobinHood("username", pwd = r"(abc\def)")
rh <- RobinHood("username", pwd = "abc\\def")
rh <- RobinHood("username", pwd = "abc%5Cdef")


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM