【问题标题】:Substring and gsub in RR中的子字符串和gsub
【发布时间】:2015-08-20 18:02:25
【问题描述】:

我有格式类似于 \t\tloc: 'Silver Spring, MD', 的字符串,我从网站中提取了这些字符串,并且只想检索城市名称和州缩写,例如Silver Spring, MD。我正在考虑将gsubsubstr 组合起来,但是城市名称可能会根据其他数据而改变,因此给substr 一个开始和结束索引是没有意义的。这是我到目前为止尝试过的代码:

# Would like to extract the string "Silver Spring, MD"
# What I tried:
ldata <- "\t\tloc: 'Silver Spring, MD',"
dt<- gsub(".*: ", "",ldata)
# Produces: 'Silver Spring, MD',"

但字符串总是以相同的方式出现,城市名称位于字符串段的“ABCDE, FG”部分。我是 R 新手,所以如果有更有效的方法可以做到这一点。

【问题讨论】:

    标签: r substring gsub


    【解决方案1】:
    dt<-sub(".*'(.*)'.*","\\1",ldata)
    

    【讨论】:

    • 谢谢。工作完美。虽然我试图理解它并且无法完全弄清楚 R 读取的 '(.*)' 是什么。这是否意味着封装在 ' ' 中的任何内容?
    • .* 的第一个实例表示任何内容,直到它遇到第一个 ''(.*)' 表示“找到单引号序列并记住(( ) 这样做)里面的内容”,然后继续与grep。记住的内容通过\\1 命令保存,其余的被转储。我敢肯定,还有比这更好、更简洁的解释,虽然 :)
    • @AlexeyFerapontov 不,那是完美的。谢谢。
    【解决方案2】:

    另一个不使用捕获组的选项是

    gsub("^[^']+'|',$", '', ldata)
    #[1] "Silver Spring, MD"
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 2021-01-28
      • 2021-11-14
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      相关资源
      最近更新 更多