扫码关注官方订阅号
问题是这样的, 我爬虫抓取了知乎的问题,然后想要用问题作为本地保存的文件名。
可是有一些问题(如下)中包含了" / ,?"诸如此类的不能够创建文件的字符。
如何从A股/港股/新三板等五千多只股票中选择出一只大牛股?
请问如何用正则表达式过滤他们? 或者有没有其他的办法 ?
走同样的路,发现不同的人生
新建文件夹的时候自己输入特殊的字符,windows系统会有以上的提示,我是这么做的:
import re fileName = re.sub('[\/:*?"<>|]','-',fileName)
没有试过linux系统的,只是自己的方法,也希望能跟你一起找到更好的方法
要去掉不合适的字符不需要正则表达式,只要用 translate 方法就可以:
name.translate(None, "|\\?*<\":>+[]/'")
或者替换为下划线:
from string import maketrans table = maketrans("|\\?*<\":>+[]/'", '_'* 13) name = name.translate(table)
如果 name 是 unicode 则 table 的形式略有区别:
name
unicode
table
table = dict( (ord(c), ord('_')), for c in "|\\?*<\":>+[]/'" )
如果要删掉字符则把 ord('_') 改为 None。
ord('_')
None
另外并非合法字符构成的就是合法文件名,比如 .、nul 之类也不是合法的文件名,路径过长也不合法。
.
nul
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
新建文件夹的时候自己输入特殊的字符,windows系统会有以上的提示,我是这么做的:
没有试过linux系统的,只是自己的方法,也希望能跟你一起找到更好的方法
要去掉不合适的字符不需要正则表达式,只要用 translate 方法就可以:
或者替换为下划线:
如果
name是unicode则table的形式略有区别:如果要删掉字符则把
ord('_')改为None。另外并非合法字符构成的就是合法文件名,比如
.、nul之类也不是合法的文件名,路径过长也不合法。