【发布时间】:2012-03-05 08:12:20
【问题描述】:
我有一个关于正则表达式/Python 的问题。抱歉,如果这个话题已经被讨论了数百万次 - 通常我会在 so/google 等上找到答案,但我被这个问题困在数百万个答案中。(说实话 - 我拥有一本正则表达式书,但不知何故我太笨了,根本看不懂……)
对于音乐管理系统,我需要从路径中提取信息,提供不同的选项集。这里举两个例子:
如果路径是:(案例1)
"/The Prodigy/The Fat Of The Land/04 - Funky Stuff.flac"
它应该提取:
- 艺术家:“神童”
- 发布:“大地之肥”
- 曲目编号:4
- 标题:“时髦的东西”
例如:(案例2)
"/[XLR 483] The Fat Of The Land/04 - The Prodigy - The Funky Stuff.flac"
应该提取:
- 目录号:“XLR 483”
- 发布:“大地之肥”
- 曲目编号:4
- 艺术家:“神童”
- 标题:“时髦的东西”
不需要涵盖这两种情况的正则表达式,这只是两个示例。然后,我会将它们作为选项(或添加自己的选项的起点)提供。
任何帮助将不胜感激!
@S.Lott:我没有正则表达式,我从拆分字符串开始:
parts = rel_path.split('/')
track = parts[-1]
release = parts[-2]
artist = parts[-3]
但这对我来说似乎是一个非常不灵活且不优雅的解决方案。
编辑:
到目前为止,我有类似的东西:
pattern = re.compile('^/(?P<artist>[a-zA-Z0-9 ]+)/(?P<release>[a-zA-Z0-9 ]+)/(?P<track>[a-zA-Z0-9 -_]+).[a-zA-Z]*.*')
rel_path = '/The Prodigy/The Fat Of The Land/04 - Funky Stuff.flac'
match = pattern.search(rel_path)
artist = match.group('artist')
release = match.group('release')
track = match.group('track')
【问题讨论】:
-
第 1 步。发布您正在使用的正则表达式以及您遇到的问题。我们可以提供帮助,但我们不喜欢为您编写代码。发布正则表达式以及每个正则表达式出了什么问题。
-
分割字符串有什么问题?它有效,对吧?
-
@ S.Lott - 拆分没有错,但是很难让模式可编辑(在代码之外)。我想在管理界面中提供(可编辑的)预设。
-
a-zA-Z??你为什么不使用 Unicode?span> -
如上所述 - 可能是因为我不够聪明,无法理解它...... :)
标签: python regex path extraction