仅在 R 中从文本中去除单个正斜杠
Strip single forward slash from text only in R
我正在尝试使用 R 从任何文本中仅删除 /。我尝试了不同的方法,但得到的结果好坏参半。
这是我正在处理的文本s/p Left IOLI 3/9/04.
我正在尝试生成这样的输出 sp Left IOLI 3/9/04.
只去除文本中的 /
而不是数字。
这四个我都试过了
gsub("\", "", str, fixed=T)
gsub("/", ".", str, fixed=T)
gsub("[^A-Za-z]", ".", str, perl =T)
str_replace( str, "/", "")
到目前为止只有 gsub("[^A-Za-z]", ".", str, perl =T)
有效。傻瓜把所有文本数字和所有内容的 /
都去掉了。我只需要文本中的 /
消失。非常感谢大家的帮助。
我们可以使用正则表达式查找来删除不在数字之间的正斜杠。
gsub('(?<![0-9])/(?![0-9])', '', str, perl=TRUE)
#[1] "sp Left IOLI 3/9/04."
如果我们还需要在左侧或右侧包含非数字字符时删除 /
,
gsub('(?<![0-9])/|/(?![0-9])', '', str1, perl=TRUE)
#[1] "sp Left IOLI 3/9/04." "s12 45p sp Left"
数据
str <- 's/p Left IOLI 3/9/04.'
str1 <- c(str, 's/12 45/p s/p Left')
另一种方法是 运行 多个正则表达式。此处使用包 stringr 的 str_replace_all 进行演示,但显然也可以使用基本函数。
#First correct for / between 2 alphabets like s/p
mystring <- str_replace_all(mystring, "([a-zA-Z])/([a-zA-Z])", "\1\2")
#Next, correct for / between 1 alphabet and 1 number like s/12 or 45/p
mystring <- str_replace_all(mystring, "([a-zA-Z])/([\d])", "\1\2")
mystring <- str_replace_all(mystring, "([\d])/([a-zA-Z])", "\1\2")
我正在尝试使用 R 从任何文本中仅删除 /。我尝试了不同的方法,但得到的结果好坏参半。
这是我正在处理的文本s/p Left IOLI 3/9/04.
我正在尝试生成这样的输出 sp Left IOLI 3/9/04.
只去除文本中的 /
而不是数字。
这四个我都试过了
gsub("\", "", str, fixed=T)
gsub("/", ".", str, fixed=T)
gsub("[^A-Za-z]", ".", str, perl =T)
str_replace( str, "/", "")
到目前为止只有 gsub("[^A-Za-z]", ".", str, perl =T)
有效。傻瓜把所有文本数字和所有内容的 /
都去掉了。我只需要文本中的 /
消失。非常感谢大家的帮助。
我们可以使用正则表达式查找来删除不在数字之间的正斜杠。
gsub('(?<![0-9])/(?![0-9])', '', str, perl=TRUE)
#[1] "sp Left IOLI 3/9/04."
如果我们还需要在左侧或右侧包含非数字字符时删除 /
,
gsub('(?<![0-9])/|/(?![0-9])', '', str1, perl=TRUE)
#[1] "sp Left IOLI 3/9/04." "s12 45p sp Left"
数据
str <- 's/p Left IOLI 3/9/04.'
str1 <- c(str, 's/12 45/p s/p Left')
另一种方法是 运行 多个正则表达式。此处使用包 stringr 的 str_replace_all 进行演示,但显然也可以使用基本函数。
#First correct for / between 2 alphabets like s/p
mystring <- str_replace_all(mystring, "([a-zA-Z])/([a-zA-Z])", "\1\2")
#Next, correct for / between 1 alphabet and 1 number like s/12 or 45/p
mystring <- str_replace_all(mystring, "([a-zA-Z])/([\d])", "\1\2")
mystring <- str_replace_all(mystring, "([\d])/([a-zA-Z])", "\1\2")