簡體   English   中英

如何使用R刪除字符串中其他兩個重復出現的字符之間的所有字符?

[英]How can I remove all characters between two other recurring characters in a string using R?

以下代碼在使用gsub幫助“清除”之前成功獲取了我所需的文本。

am1<-getURL("url.com")
ami1<-htmlTreeParse(am1, useInternalNodes = TRUE)
ami1.tree.parse<- unlist(xpathApply(ami1, path = '//td', fun = xmlValue))
ami1.txt<-NULL
  for (i in 2:(length(ami1.tree.parse)-1)) {
    ami1.txt<-paste(ami1.txt, as.character(ami1.tree.parse[i]), sep = ' ')
  }

問題

我無法刪除采訪文本中的全部問題。 例如,文本如下所示:

[1] "Q. How well do you think things are going in your marriage?JOE SMITH: It's going quite alright.Q. Where do you see yourself in five years?JOE SMITH: I'll probably move to Los Angeles and get into acting.Q. Okay. How do you think your wife feels about your thinking?JOE SMITH: I think she'd respond positively."

並且為了格式化的緣故:

“問:你認為婚姻中的情況如何?喬·史密斯:一切都很好。問:五年后你會在哪里看到自己?喬·史密斯:我可能會搬到洛杉磯開始演戲。問:好的。您如何看待妻子對您的想法的看法?喬伊·史密斯:我想她會做出積極回應。”

絕對要清楚,我從上面的文本中需要的是:

[1] "It's going quite alright. I'll probably move to Los Angeles and get into acting. I think she'd respond positively."

“一切都很好。我可能會搬到洛杉磯開始演戲。我認為她會做出積極回應。”

我試過了:

 ami1.txt<-gsub("Q.[^?]+H:", "",ami1.txt)
 ami1.txt<-gsub("Q.[^?]+H: ", "",ami1.txt)
 ami1.txt<-gsub("Q.*H:", "",ami1.txt)

這歸結於我不能確切把握正則表達式 ,但是如果有人可以指出我正確的方向,我將不勝感激。

las,我撒謊了,文字顯然有點復雜。 我在下面的上方添加了更復雜的元素。 一些“問題”(問)以一個句子開頭:

 str2<-"Q. How well do you think things are going in your marriage?JOE SMITH: It's going quite alright.Q. Where do you see yourself in five years?JOE SMITH: I'll probably move to Los Angeles and get into acting.Q. Okay. How do you think your wife feels about your thinking?JOE SMITH: I think she'd respond positively.Q. That's interesting. When would you consider speaking to her?JOE SMITH: Probably, tomorrow. Q. That sounds good. How do you feel now? Better than before?JOE SMITH: Yeah I'm feeling alright."

問:您認為婚姻中的狀況如何?喬·史密斯:一切都很好。 問:五年后你會在哪里看到自己?喬·史密斯:我可能會搬到洛杉磯開始演藝。 好的。 問:您認為您的妻子對您的想法有何看法?史密斯:我認為她會積極回應。 那很有意思。 你什么時候考慮和她說話?喬·史密斯:大概是明天。 問:聽起來不錯。 你現在感覺怎么樣? JOE SMITH:是的,我感覺還不錯。

任務保持不變,而akrun的答案使我接近:

 trimws(gsub("Q[^?]+\\?|[A-Z ]+:", "", str2))
 print(str2)
 [1] "It's going quite alright. I'll probably move to Los Angeles and get into acting. I think she'd respond positively. Probably, tomorrow.  Better than before? Yeah I'm feeling alright."

[1]“一切都很好。我可能會搬到洛杉磯開始演戲。我認為她會做出積極回應。可能是明天。比以前更好?是的,我感覺還好。”

最終更新

阿克倫的答案:

 trimws(gsub("Q[^?]+\\?|[A-Z ]+:", "", str2))

我不太確定為什么上面的答案沒有完全刪除“ Q”和最后一個問號之間的所有內容,但是a。 修改完上述問題后,我發現實際上需要查找的是從“ Q”到“:”的所有內容都將被刪除。 因此,我使用此工具來幫助我了解對正則表達式的理解出了什么問題。 我下面將擦除“ Q”和“:”之間的所有字符。

 gsub("Q[^:]+\\?|[A-Z ]+:", "", str2)

我們可以匹配以Q開頭的字符,然后是不是?字符? [^?] )后跟問號或( | )大寫字母,后跟:然后將其替換為空格。 如果有前導/滯后空格,請使用trimws

trimws(gsub("Q[^?]+\\?|[A-Z ]+:", "", str1))
#[1] "It's going quite alright. I'll probably move to Los Angeles and get into acting. I think she'd respond positively."

數據

str1 <- "Q. How well do you think things are going in your marriage?JOE SMITH: It's going quite alright.Q. Where do you see yourself in five years?JOE SMITH: I'll probably move to Los Angeles and get into acting.Q. Okay. How do you think your wife feels about your thinking?JOE SMITH: I think she'd respond positively."

暫無
暫無

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

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