簡體   English   中英

僅在 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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM