我正在处理一个巨大的 URL 列表。只是一个简单的问题,我试图将 URL 的一部分切掉,见下文:
http://www.domainname.com/page?CONTENT_ITEM_ID=1234¶m2¶m3
我怎么切出:
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¶m3&CONTENT_ITEM_ID=1234¶m1'
>>> 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/