python - 使用 Python 对 URL 进行切片

标签 python url string

我正在处理一个巨大的 URL 列表。只是一个简单的问题,我试图将 URL 的一部分切掉,见下文:

http://www.domainname.com/page?CONTENT_ITEM_ID=1234&param2&param3

我怎么切出:

http://www.domainname.com/page?CONTENT_ITEM_ID=1234

有时候CONTENT_ITEM_ID后面有两个以上的参数,而且每次的ID都不一样,我想可以通过找到第一个&然后切掉那个&之前的字符来完成,不太清楚如何做到这一点不过。

干杯

最佳答案

使用 urlparse模块。检查此功能:

import urlparse

def process_url(url, keep_params=('CONTENT_ITEM_ID=',)):
    parsed= urlparse.urlsplit(url)
    filtered_query= '&'.join(
        qry_item
        for qry_item in parsed.query.split('&')
        if qry_item.startswith(keep_params))
    return urlparse.urlunsplit(parsed[:3] + (filtered_query,) + parsed[4:])

在你的例子中:

>>> process_url(a)
'http://www.domainname.com/page?CONTENT_ITEM_ID=1234'

如果您决定还需要更多查询参数,或者如果参数的顺序不固定,则此函数有一个额外的好处,它更易于使用,如:

>>> url='http://www.domainname.com/page?other_value=xx&param3&CONTENT_ITEM_ID=1234&param1'
>>> process_url(url, ('CONTENT_ITEM_ID', 'other_value'))
'http://www.domainname.com/page?other_value=xx&CONTENT_ITEM_ID=1234'

关于python - 使用 Python 对 URL 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258746/

相关文章:

python - 按顺序从多个字符串中获取字符

php - 如何从 CodeIgniter 中的 URL 中删除 Controller 和函数名称

java - URLEncoder 无法翻译空格字符

c++ - 为什么我的编译器将字符串视为 const char[]?

java - 格式化日期以获取年份数字的最后两位数字(例如 : 19 from 2019)

c++ - 从 C++ 中的字符串中删除字符

python - Django Rest Framework 未根据请求传递 'X_USERNAME' - 验证方法参数

python - 在 Flask 中注册用户时 session 不可用

python - 如何为返回巨大稀疏矩阵的函数编写Python单元测试

ios - 将字符串转换为 URL