考虑一下这个简单的例子
www.stackunderflow.com?q=snack%20over%20flow
我对解析url的查询字符串感兴趣。但是,正如您所看到的,我有这些烦人的URL编码字符串(如%20),我需要转换。
我怎样才能在R中做到这一点?我想获得一个干净的字符串,如snack over flow。我知道如何获得查询部分:
> str_match('www.stackunderflow.com?q=snack%20over%20flow', regex('\\?q=(.*)'))[,2]
[1] "snack%20over%20flow"但我不知道怎么清理绳子。
谢谢!
发布于 2019-08-14 12:48:21
我在这里发现urltools包很有用
# install.packages("urltools")
library(urltools)
url_decode("snack%20over%20flow")
#[1] "snack over flow"发布于 2019-08-14 13:29:53
还提供了httr包:
httr::parse_url("www.stackunderflow.com?q=snack%20over%20flow")$
scheme空$hostname空$port空$path 1 "www.stackunderflow.com“$query $query$q1小吃”$params NULL $fragment NULL $username NULL $password NULL attr“(,"class") 1 "url”
因此,您可以调用parse_url(SOME_URL)$query来获取该字符串。在框架下,它调用httr::parse_query将查询拆分为各个部分,然后调用curl::curl_unescape,后者调用C实现(来自libcurl)来解码此类字符串。
发布于 2019-08-14 13:13:01
R附带的utils包具有一个URLdecode函数:
URLdecode("snack%20over%20flow")
# [1] "snack over flow"它不是向量化的(一次只能处理一个字符串),但这很容易改变。
URLdecode_vec <- Vectorize(URLdecode)
URLdecode_vec(c("snack%20over%20flow", "snack%20over%20flow"))
# snack%20over%20flow snack%20over%20flow
# "snack over flow" "snack over flow"https://stackoverflow.com/questions/57494962
复制相似问题