我正在尝试制作一个程序,它接收输入的歌曲文件和一种在文件中写入元标记的格式。以下是一些通话示例:
./parser '%n_-_%t.mp3' 01_-_Respect.mp3
给我track=01; title=Respect
./parser '%b._%n.%t.mp3' The_Queen_of_Soul._01.Respect.mp3
给我album=The_Queen_of_Sould; track=01; title=Respect
./parser '%a-%b._%n.%t.mp3' Aretha_Franklin-The_Queen_of_Soul._01.Respect.mp3
给我artist=Aretha_Franklin; track=01; title=Respect
./parser '%a_-_%b_-_%n_-_%t.mp3' Aretha_Franklin_-_The_Queen_of_Soul_-_01_-_Respect.mp3
给我artist=Aretha_Franklin; track=01; title=Respect
对于对文件01_-_Respect.mp3
的调用,我希望有一个包含01
和另一个Respect
的变量
这里%n
和%t
分别表示歌曲的编号和标题。问题是我不知道如何在bash(或最终在python中)中提取这些信息
我最大的问题是我事先不知道格式
注意:还有更多的信息,例如专辑的%b
,艺术家的%a
等等
你可以详细说明一下。不过,这是一个非常简单的例子
输出
[('01', 'Respect')]
我用这个page来玩regex
更新
既然给出了格式,就使用字符串切片。好吧,仅限于具体情况
请尝试以下代码:
(考虑到参数是在运行时给出的)
变量num和title将存储参数中的部分
嗯,您可以使用string方法
split
将字符串按_-_
拆分对于从命令行获取输入,可以使用sys.argv来获取
举个例子:
更新:
当然,您可以将模式作为第一个参数传递,将文件作为第二个参数传递,如下所示:
现在如果您需要更复杂和动态的处理,那么
Regex
就是您的赢家为了编写一个好的正则表达式,你必须理解你的数据和你的问题,否则你最终会编写一个有问题的正则表达式
相关问题 更多 >
编程相关推荐