[英]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.