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