我正在编写一个脚本来解析和格式化广播电台的歌曲名称和艺术家。播出系统将跟踪元数据发送到python脚本
$ python metadata.py "title" "artist"
稍后将格式化的元数据发送到HTTP端点。
元数据将以这种格式出现;
Title: "Song Name (feat. ABC) (Ost. XYZ (aka. ASDF))"
Artist: "DEF"
如您所见,有时feat.
或Ost.
可以包含子括号。
这就是我想要实现的目标:
Title: "Song Name"
Artist: "DEF feat. ABC"
基本上是放弃Ost.
括号中的所有内容并将feat.
括号向下移动到艺术家字段。
但问题是,我需要一些代码来检测主括号的实际末端(忽略子括号)以正确格式化它们。
答案 0 :(得分:0)
所以这是一种计算括号的新方法,我定义了一个函数:
def getInsideBracket(title):
bracket = 0
last = 0
first = 0
for pos, car in enumerate(title):
if car == '(':
if bracket == 0:
first = pos
bracket += 1
elif car == ')':
bracket -= 1
if bracket == 0:
last = pos
return first, last
它全部都在壮举中。 所以现在你可以采取这两个位置(第一个和最后一个):
fist, last = getInsideBracket(title)
feat = title[first:last]
feat = feat[feat.index(' '):]
您必须将feat
添加到您的艺术家字符串中,并从标题字符串中删除此块:
title = title[:title.index('(feat.')]
希望有所帮助