为了账号安全,请及时绑定邮箱和手机立即绑定

替换R中的单个反斜杠

/ 猿问

替换R中的单个反斜杠

慕雪6442864 2019-10-22 22:04:35

我有一个看起来像的字符串:


str<-"a\f\r"

我正在尝试删除反斜杠,但没有任何效果:


gsub("\","",str, fixed=TRUE)

gsub("\\","",str)

gsub("(\)","",str)

gsub("([\])","",str)

...基本上所有您可以想象的变化。我什至尝试了该string_replace_all功能。有帮助吗?


我正在使用R版本3.1.1;Mac OSX 10.7;将dput在我的琴弦的矢量一个字符串给出:


dput(line)

"ud83d\ude21\ud83d\udd2b"

我使用的是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 …

    


谢谢。


查看完整描述

3 回答

?
慕桂英3389331

从键盘输入反斜杠时,请始终将其转义。


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

请注意,如果您这样做


str <- "a\f\r"

然后str包含任何反斜杠。它由3个字符组成a,\f(通常不可以打印,除了\f和除外\r)。


只是为了解决一个可能的问题。如果您是从文件中读取数据的,则文件中的反斜杠不必加倍。例如,如果您有一个test.txt包含


a\b\c\d\e\f

你也是


str <- readLines("test.txt")

然后str将包含a\b\c\d\e\f您所期望的字符串:6个字母,用5个单反斜杠分隔。但是,如果要使用它,您仍然必须键入加倍的反斜杠。


str <- gsub("\\", "", str, fixed=TRUE)  # now contains abcdef

从dput看来,您所获得的是UTF-16编码的文本,该文本可能来自Windows计算机。根据


https://zh.wikipedia.org/wiki/Unicode#Character_General_Category

https://zh.wikipedia.org/wiki/UTF-16

它在Supplementary Multilingual Plane中对字形进行编码,这很晦涩。我猜你需要提供的参数encoding="UTF-16"来readLines当你的文件中读取。


查看完整回答
反对 回复 2019-10-22
?
牛魔王的故事

一种相当通用的解决方案是


gsub("\\\\", "", str)

感谢上面的评论。


查看完整回答
反对 回复 2019-10-22
?
qq_笑_17

这可能会有所帮助:)


require(stringi)

stri_escape_unicode("ala\\ma\\kota")

## [1] "ala\\\\ma\\\\kota"

stri_unescape_unicode("ala\\ ma\\ kota")

## [1] "ala ma kota"


查看完整回答
反对 回复 2019-10-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信