Python3如何替换XML读取的文件路径字符串中的转义替代字符
问题原因
这类带%XX格式的字符不是UTF-8编码错误,是标准的URL百分号编码:
%20对应空格字符%CC%88是U+0308组合分音符,会和前面的o组合成变音字符ö
用Python标准库就能完成解码,不需要安装第三方依赖。
实现代码
直接调用urllib.parse模块的unquote方法即可完成解码:
from urllib.parse import unquote raw_path = "file:///Volumes/Storage/Music/Media/Bjo%CC%88rk/Post/02%20Hyperballad.m4a" normal_path = unquote(raw_path) print(normal_path)
执行后输出结果完全匹配你需要的格式:
file:///Volumes/Storage/Music/Media/Björk/Post/02 Hyperballad.m4a
补充:本地文件操作适配
如果你后续需要直接读取、操作这个路径对应的本地文件,可以去掉开头的file://协议头,转成系统可识别的本地路径对象:
from urllib.parse import unquote, urlparse from pathlib import Path raw_path = "file:///Volumes/Storage/Music/Media/Bjo%CC%88rk/Post/02%20Hyperballad.m4a" local_path = Path(unquote(urlparse(raw_path).path)) # 生成的local_path可以直接传入open()、os相关文件操作函数使用
内容的提问来源于stack exchange,提问作者St4rb0y
相关产品推荐
相关产品推荐

