首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除URL中的查询字符串?

如何清除URL中的查询字符串?
EN

Stack Overflow用户
提问于 2019-08-14 12:43:10
回答 4查看 344关注 0票数 0

考虑一下这个简单的例子

www.stackunderflow.com?q=snack%20over%20flow

我对解析url的查询字符串感兴趣。但是,正如您所看到的,我有这些烦人的URL编码字符串(如%20),我需要转换。

我怎样才能在R中做到这一点?我想获得一个干净的字符串,如snack over flow。我知道如何获得查询部分:

代码语言:javascript
复制
> str_match('www.stackunderflow.com?q=snack%20over%20flow', regex('\\?q=(.*)'))[,2]
[1] "snack%20over%20flow"

但我不知道怎么清理绳子。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-08-14 12:48:21

我在这里发现urltools包很有用

代码语言:javascript
复制
# install.packages("urltools")
library(urltools)
url_decode("snack%20over%20flow")
#[1] "snack over flow"
票数 6
EN

Stack Overflow用户

发布于 2019-08-14 13:29:53

还提供了httr包:

代码语言:javascript
复制
httr::parse_url("www.stackunderflow.com?q=snack%20over%20flow")

$scheme空$hostname空$port空$path 1 "www.stackunderflow.com“$query $query$q 1小吃”$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)来解码此类字符串。

票数 4
EN

Stack Overflow用户

发布于 2019-08-14 13:13:01

R附带的utils包具有一个URLdecode函数:

代码语言:javascript
复制
URLdecode("snack%20over%20flow")
# [1] "snack over flow"

它不是向量化的(一次只能处理一个字符串),但这很容易改变。

代码语言:javascript
复制
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"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57494962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档