Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python文件名清理_Python_Regex - Fatal编程技术网

python文件名清理

python文件名清理,python,regex,Python,Regex,在python中,可以去掉所有特殊字符和空格并替换为连字符,但保留点扩展名(即文件扩展名,如.mp4或.mov或.txt或.jpg或.png或.pdf) 例如: string = 'Special $#! characters spaces_ 888323.mp4' 应该导致 Special-characters-spaces_-888323.mp4 我正在使用下面的方法,但我认为这不是一个正确的方法 re.sub('(\W+)','-', string).replace('-mp4',

在python中,可以去掉所有特殊字符和空格并替换为连字符,但保留点扩展名(即文件扩展名,如.mp4或.mov或.txt或.jpg或.png或.pdf)

例如:

string = 'Special $#! characters   spaces_ 888323.mp4'
应该导致

Special-characters-spaces_-888323.mp4
我正在使用下面的方法,但我认为这不是一个正确的方法

re.sub('(\W+)','-', string).replace('-mp4','.mp4').replace('-mov','.mov')

如果是真正的文件名,请考虑使用临时分离扩展名:

name, ext = os.path.splitext(string)
现在,您可以自由操作
name
,保持
ext
不变:

name = re.sub('(\W+)','-', name)
然后你就重新组合:

string = name + ext

如果这不是一个单行程序让您感到不安,请将其转换为函数。我也建议预先编译正则表达式。

如果它是真正的文件名,请考虑使用临时分离扩展名:

name, ext = os.path.splitext(string)
现在,您可以自由操作
name
,保持
ext
不变:

name = re.sub('(\W+)','-', name)
然后你就重新组合:

string = name + ext

如果这不是一个单行程序让您感到不安,请将其转换为函数。我还建议预先编译正则表达式。

从技术上讲,任何有效的方法都是正确的。然而,有更好的方法。从技术上讲,任何有效的方法都是正确的。不过,还有更好的方法。哦,很好,您还添加了一个splitext解决方案;-)所以我删除了我的,这更好。哇。我在手机上,所以看到一切都推迟了。直到你提到你才看到你的更新。我没有想到我正在做的拆分+加入的废话实际上可以通过添加一个捕获组变成一个简单的子对象。。。我是个笨蛋,我需要一些睡眠ᴏʟᴅsᴘᴇᴇᴅ. 我很喜欢你的回答。不过,感谢您的信任投票。哦,很好,您还添加了splitext解决方案;-)所以我删除了我的,这更好。哇。我在手机上,所以看到一切都推迟了。直到你提到你才看到你的更新。我没有想到我正在做的拆分+加入的废话实际上可以通过添加一个捕获组变成一个简单的子对象。。。我是个笨蛋,我需要一些睡眠ᴏʟᴅsᴘᴇᴇᴅ. 我很喜欢你的回答。不过还是要感谢你的信任投票。