如何用R将字符串指定部分替换为变量值(URL日期替换场景)
实现方法1:正则表达式替换(符合通配符类匹配需求)
直接用gsub()函数结合正则规则匹配end_date后的日期段即可,不需要提前知晓原固定日期的具体值:
todays_date <- as.character(Sys.Date()) URL <- "https://api.performancehorizon.com/reporting/export/export/click.csv?start_date=2021-11-23+00%3A00%3A00&end_date=2021-11-24+00%3A00%3A00&campaign_id=1011l3888&convert_currency=USD&ref_conversion_metric_id%5B%5D=2" # 正则定位end_date=后的YYYY-MM-DD格式日期,替换为当前日期 modified_URL <- gsub("(?<=end_date=)\\d{4}-\\d{2}-\\d{2}", todays_date, URL, perl = TRUE)
上述代码中的(?<=end_date=)是正向预查规则,只会匹配end_date=后面紧跟的日期,不会修改URL其他位置的内容,原URL里的时间后缀+00%3A00%3A00会完整保留。
实现方法2:URL参数解析修改(更稳妥,无匹配误差)
如果担心URL其他位置出现相同格式的日期被误替换,可以通过解析URL参数的方式修改,逻辑更严谨:
# 需先安装加载httr包:install.packages("httr") library(httr) todays_date <- as.character(Sys.Date()) original_url <- "https://api.performancehorizon.com/reporting/export/export/click.csv?start_date=2021-11-23+00%3A00%3A00&end_date=2021-11-24+00%3A00%3A00&campaign_id=1011l3888&convert_currency=USD&ref_conversion_metric_id%5B%5D=2" # 解析URL为结构化对象 parsed_url <- parse_url(original_url) # 直接修改end_date参数值,保留原时间后缀 parsed_url$query$end_date <- paste0(todays_date, "+00%3A00%3A00") # 重新拼接为完整URL字符串 modified_URL <- build_url(parsed_url)
内容的提问来源于stack exchange,提问作者Juan Lozano
相关产品推荐
相关产品推荐

