python - 从 url 中去除随机字符

标签 python replace strip

我有一个 url 列表如下:

urls = [
www.example.com?search?q=Term&page=0,
www.example.com?search?q=Term&page=1,
www.example.com?search?q=Term&page=2
]

其中 Term 可以是我们想要的任何术语:EuropeLondon 等。

我的部分代码(在整个代码中)如下:

for url in urls:
  file_name = url.replace('http://www.example.com/search?q=','').replace('=','').replace('&','')
  file_name = file_name+('.html')

结果是:

Termpage0.html
Termpage1.html
and so on..

我怎样才能去掉 url 列表中的 Term,结果如下:

page0.html
page1.html
and so on?

最佳答案

你可以使用 urllib.parse解析 URL,然后解析查询部分。这种方法的好处是,即使更改查询部分的顺序或添加新部分,它也能正常工作:

from urllib import parse

urls = [
    'www.example.com?search?q=Term&page=0',
    'www.example.com?search?q=Term&page=1',
    'www.example.com?search?q=Term&page=2'
]

for url in urls:
    parts = parse.urlparse(url)
    query = parse.parse_qs(parts.query)
    print('page{}.html'.format(query['page'][0]))

输出:

page0.html
page1.html
page2.html

在上面urlparse返回包含 URL 组件的 ParseResult 对象:

>>> from urllib import parse
>>> parts = parse.urlparse('www.example.com/search?q=Term&page=0')
>>> parts
ParseResult(scheme='', netloc='', path='www.example.com/search', params='', query='q=Term&page=0', fragment='')

然后 parse_qs将返回 dict 的查询参数,其中值为列表:

>>> query = parse.parse_qs(parts.query)
>>> query
{'page': ['0'], 'q': ['Term']}

关于python - 从 url 中去除随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41133414/

相关文章:

r - 如何在 R 中用 NA 替换缺失的空格?

php - 自动从 PHP 代码中删除注释的最佳方法

python - 从对(列名、值)的字典中填充表,如果未找到则为 0 - Python 和 sqlite3

阿特金筛法的 Python 实现

python - 对数据框进行分组并按组计算归一化标准差?

python - Xlsxwriter 根据 if 语句更改格式颜色

javascript - Jquery 替换所有文本语法正则表达式中的变量

r - R用唯一的随机数替换NA

javascript - 文件加载到浏览器后去掉href的路径

python - Python 中的 String.strip()