在过去的三天里,我一直在尝试制作一个供我自己使用的图像/视频标签系统,但这已经证明是一个超越我的挑战。
这些是字符串:

d:\images\tagging 1\GIFs\kung fu panda, fight.webm
d:\images\tagging 1\GIFs\kung fu panda, fight (2).webm
d:\images\tagging 1\GIFs\kung fu panda 2, fight.webm
d:\images\tagging 1\GIFs\kung fu panda 2, fight (2).webm
d:\images\tagging 1\GIFs\pulp fiction, samuel l. jackson, angry, funny.webm

我有四件事我试着去改变,以达到我想要的,但没有成功:
(?<=d:\\images\\tagging\s1\\GIFs\\)([\w\s])+

([a-z0-9]\s?)+

(?<=\\)[^\\]*?(?=\..*$)

[^\\/:*?"<>|\r\n]+$

1差不多了,但它没有超过第一个逗号。
2这几乎可以完成所有操作,但我还没有找到排除目录、(#)和扩展名的方法。
3从互联网上获取,捕获“l.”并停留在那里,整个文件名,不能按我的意愿使用逗号,捕获(#)。
从regexbuddy(是的,我是在绝望中买的)、捕获(#)和扩展中获取的。
@提姆格布
其目的是获取不带逗号(#)和扩展名的文件名,因此:
"kung fu panda" "fight"
"kung fu panda" "fight"
"kung fu panda 2" "fight"
"kung fu panda 2" "fight"
"pulp fiction" "samuel l. jackson" "angry" "funny"

最佳答案

你的问题不太清楚,但我想你想解析文件名如果是这样的话,我不建议使用re作为您的主要工具。
相反,看看os.path

import os.path  # Or `import ntpath` for Windows paths on non-Windows systems

dir, file_name = os.path.split('d:\images\tagging 1\GIFs\kung fu panda, fight (2).webm')
# dir = 'd:\images\tagging 1\GIFs'
# file_name = 'kung fu panda, fight (2).webm'

root, ext = os.path.splitext(file_name)
# root = 'kung fu panda, fight (2)'
# ext = '.webm'

现在有一个简单得多的问题:删除括号中的数字。

关于python - RegEx排除目录,捕获用逗号分隔的文件名,排除“(number)”和扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34978260/

10-14 17:11