如何清理URL并提取文件名?技术实现方法问询
从URL中提取文件名的几种实用方法
嘿,这里有几个简单直接的办法帮你把那些URL里的前缀去掉,只留下文件名,适配不同的使用场景:
方法1:用命令行快速处理(适用于批量URL)
如果你的URL都存在一个文本文件里(比如叫urls.txt),可以用bash的awk命令一键提取:
cat urls.txt | awk -F '/' '{print $NF}'
原理很简单:-F '/'把每一行按斜杠分割成字段,$NF代表取最后一个字段,也就是我们要的文件名。
你也可以用cut命令(适合路径段数固定的情况):
cat urls.txt | cut -d '/' -f 7
这里的-f 7是因为你的URL结构是http://domain/upload/iblock/xxx/filename,数下来文件名是第7个字段。
方法2:用Python脚本灵活处理
如果需要集成到代码里,Python的os.path模块或者urllib模块都能轻松搞定:
方式A:用os.path.basename
import os urls = [ "http://isonex.ru/upload/iblock/ebd/ebdbd2a3961fc73170978ae4995b5a4b.jpeg", "http://isonex.ru/upload/iblock/62a/62a5e49b20e498bfef00d81fa03403c8.jpeg" ] for url in urls: print(os.path.basename(url))
方式B:用urllib.parse处理更规范的URL
如果URL里有特殊字符,这个方法更稳妥:
from urllib.parse import urlsplit import os urls = [ "http://isonex.ru/upload/iblock/ebd/ebdbd2a3961fc73170978ae4995b5a4b.jpeg", "http://isonex.ru/upload/iblock/62a/62a5e49b20e498bfef00d81fa03403c8.jpeg" ] for url in urls: path = urlsplit(url).path print(os.path.basename(path))
方法3:用文本编辑器的正则替换(适合手动少量处理)
如果你用VS Code、Sublime Text这类编辑器,打开包含URL的文件后:
- 打开替换功能(VS Code是
Ctrl+H) - 勾选「正则表达式」选项
- 查找内容填:
^.*\/ - 替换内容留空
- 点击「全部替换」,所有URL就只剩下文件名了
这个正则的意思是:匹配从行开头到最后一个斜杠的所有内容,替换为空,就剩下后面的文件名啦。
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

