python - 如何从 Python 中的 url 中删除“%20”?
问题描述
在将 %20 符号转换为字符串后,我正在尝试使用 Python(不是 C#、PHP 或其他)从 url 中删除它。但是,无论我尝试什么格式,符号都保持不变。
这是我尝试过的代码:
url = 'https://www.amazon.com/s?k=hbb%20magic%20dress' # Type string
title_text_data_file = url.split('=')[1]
if '%20'in title_text_data_file:
title_text_data_file = title_text_data_file.replace('%20+', '')
keyword = title_text_data_file.replace('+', ' ')
title_text_data_file = title_text_data_file + ".txt"
print('Keyword:',keyword,'- File title:',title_text_data_file,'- URL:',url)
这是我得到的:
Keyword: hbb%20magic%20dress - File title: hbb%20magic%20dress.txt - URL: https://www.amazon.com/s?k=hbb%20magic%20dress
这是我想得到的:
Keyword: hbb magic dress - File title: hbb+magic+dress.txt - URL: https://www.amazon.com/s?k=hbb%20magic%20dress
解决方案
实际上,最好使用旨在处理 url 的库,因为它可以处理任何 urlencoded 字符,而不仅仅是空格 ( %20
)。标准库提供urllib.parse
模块。
在您的情况下,您想使用
import urllib.parse
url = 'https://www.amazon.com/s?k=hbb%20magic%20dress'
# This extracts the query part from the url
query = urllib.parse.urlparse(url).query
# This gets the first k parameter, decoding any urlencoded character, not only spaces(%20)
keyword = urllib.parse.parse_qs(query)['k'][0]
推荐阅读
- mysql - 如何从 heroku 节点应用程序远程访问 mySQL 数据库?
- php - 如何为 apache2 -DFOREGROUND 设置环境变量
- java - LocalDateTime 无法解析“六月”
- rust - 如何修复“未解决的导入 `serde`?
- c++ - CMakeLists add_library 根据选项
- python - 谷歌或工具中禁忌列表的默认值是什么?我可以更改它以进行微调吗?
- google-drive-api - 用户 ID 谷歌主文件夹(我的云端硬盘)
- php - wpdb->更新不适用于自定义表
- getresponse - 如何优雅地关闭 System.Net.WebRequest
- image - IMG 标签渲染中的 SVG 与预期不符