源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python 正则表达式(转义问题)

  • 时间:2022-07-18 16:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python 正则表达式(转义问题)
先说一个比较囧的事情:在写虾米音乐试听下载器的时候遇到一个问题,因为保存的文件都是用音乐的标题命名的,所以碰到一些诸如「対峙/out border」等含有非法字符(哼哼,说的就是你 →_→ Windows)的标题的时候,就会保存失败。于是我想起了迅雷的解决方法:把所有的非法字符替换成下划线。 于是就引入了正则表达式的使用。一番搜索囫囵吞枣后,我写下了这样的函数:
[url=https://github.com/timothyqiu/xiami-downloader/commit/18817b0646e5e81fd75a9b55ec3a94e8e1f2dd1f]意识到了[/url]这个函数里的好多问题: [list] [*]Python 和 Shell 不同,无论单引号还是双引号,反斜杠都是转义符。走狗屎运的是,Python 对于没意义的转义 [code]\/[/code] 的处理是保持原样。[/*] [*]即便如此,[code]sanitize_filename('\\/:*?<>|')[/code] 依旧返回 [code]\_______[/code] 而不是全部都是下划线。[/*] [/list] 于是感觉得正正经经看看文档了。 [b]Raw strings[/b] 看了文档后才意识到,Python 正则表达式模块的转义是独立的。例如匹配一个反斜杠字符需要将参数写成:'\\\\': Python 将字符串转义:\\\\ 被转义为 \\ re 模块获得传入的 \\ 将其解释为正则表达式,按照正则表达式的转义规则将其转义为 \ 如此麻烦的前提下,Raw String 就大有作为了,顾名思义就是(除了结尾的反斜杠)不会被转义的字符串。于是匹配一个反斜杠字符就可以写作 r'\\'。 所以上面的 sanitize_filename 改成了:
[url=http://docs.python.org/2/library/re.html]http://docs.python.org/2/library/re.html[/url] [/list]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部