我想從字串中洗掉引號空格,在我的情況下,更改' FIGUEIRAS040C '為'FIGUEIRAS040C':
my.ex<- "SELECT * FROM CF_2021 WHERE ID_UNIQUE = ' FIGUEIRAS040C '"
和輸出需要是:
my.ex
[1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = 'FIGUEIRAS040C'"
我嘗試str_pad()函式和regex運算式沒有成功。請幫忙解決一下?
uj5u.com熱心網友回復:
1)匹配引號、任意數量的空格 ( *)、.*?任意字符的最短字串 ( ) 直到另一數量的空格 ( *) 和引號。用空格之間的部分替換它,并用引號將其括起來。如果可以有多個,請使用 gsub 而不是 sub。不使用任何包。
sub("' *(.*?) *'", "'\\1'", my.ex)
## [1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = 'FIGUEIRAS040C'"
2)這種方法適用于 SQLite,并且可以適用于您正在使用的任何 SQL 方言(如果它支持某個trim功能)。
sub("('.*?')", "trim(\\1)", my.ex)
## [1] "SELECT * FROM CF_2021 WHERE ID_UNIQUE = trim(' FIGUEIRAS040C ')"
例如,
library(sqldf)
sql <- "select * from iris where Species = ' setosa ' limit 3"
sql2 <- sub("('.*?')", "trim(\\1)", sql)
sql2
## [1] "select * from iris where Species = trim(' setosa ') limit 3"
sqldf(sql2)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/337487.html
