Tav*_*avi 24 regex string replace r
我有一个看起来像这样的字符串:
str<-"a\f\r"
Run Code Online (Sandbox Code Playgroud)
我正在尝试删除反斜杠但没有任何作用:
gsub("\","",str, fixed=TRUE)
gsub("\\","",str)
gsub("(\)","",str)
gsub("([\])","",str)
Run Code Online (Sandbox Code Playgroud)
...基本上你可以想象的所有变化.我甚至尝试过这个string_replace_all
功能.任何帮助?
我正在使用R版本3.1.1; Mac OSX 10.7; 将dput
在我的琴弦的矢量一个字符串给出:
dput(line)
"ud83d\ude21\ud83d\udd2b"
Run Code Online (Sandbox Code Playgroud)
我使用readLines
标准
.txt
文件导入
文件.该文件的内容类似于:
got an engineer booked for this afternoon \ud83d\udc4d all now hopefully sorted\ud83d\ude0a I m going to go insane ud83d\ude21\ud83d\udd2b in utf8towcs …
谢谢.
Hon*_*Ooi 11
从键盘输入反斜杠时,请务必将其转义.
str <-"this\\is\\my\\string" # note doubled backslashes -> 'this\is\my\string'
gsub("\\", "", str, fixed=TRUE) # ditto
str2 <- "a\\f\\r" # ditto -> 'a\f\r'
gsub("\\", "", str2, fixed=TRUE)# ditto
Run Code Online (Sandbox Code Playgroud)
请注意,如果你这样做
str <- "a\f\r"
Run Code Online (Sandbox Code Playgroud)
然后str
包含任何反斜杠.它由3个字符的a
,\f
(这通常不是可打印的,除非\f
,和\r
(相同).
只是为了阻止一个可能的问题.如果从文件中读取数据,则文件不必具有加倍的反斜杠.例如,如果您有一个test.txt
包含的文件
a\b\c\d\e\f
Run Code Online (Sandbox Code Playgroud)
你也是
str <- readLines("test.txt")
Run Code Online (Sandbox Code Playgroud)
然后str
将包含a\b\c\d\e\f
您期望的字符串:6个字母由5个单个反斜杠分隔.但是如果你想使用它,你仍然需要输入加倍的反斜杠.
str <- gsub("\\", "", str, fixed=TRUE) # now contains abcdef
Run Code Online (Sandbox Code Playgroud)
从中dput
,看起来你所拥有的是UTF-16编码文本,它可能来自Windows机器.根据
它在补充多语言平面中编码字形,这是非常模糊的.我猜你需要提供的参数encoding="UTF-16"
来readLines
当你的文件中读取.
这可能会有所帮助:)
require(stringi)
stri_escape_unicode("ala\\ma\\kota")
## [1] "ala\\\\ma\\\\kota"
stri_unescape_unicode("ala\\ ma\\ kota")
## [1] "ala ma kota"
Run Code Online (Sandbox Code Playgroud)
一个非常普遍的解决方案是
gsub("\\\\", "", str)
Run Code Online (Sandbox Code Playgroud)
感谢上面的评论.
由于没有任何直接的方法来处理单个反斜杠,这是David Arenburg在评论部分提供的最接近问题的解决方案
gsub("[^A-Za-z0-9]", "", str) #remove all besides the alphabets & numbers
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30994 次 |
最近记录: |