我有一个模板构建的文本行:
模板之间的区别在于歌手括号内或括号外的歌曲年份
我想把每一行分成三部分:
小示例
Ring Ring (ABBA (1973))
Waterloo (ABBA) (1974)
If I Don’t Write This Song Someone I Love Will Die (Hello Saferide) (2005)
My Best Friend (Hello Saferide (2005))
我尝试将RexExp与逻辑OR一起使用
import re
the_lines = ("Ring Ring (ABBA (1973))",
"Waterloo (ABBA) (1974)",
"If I Don’t Write This Song Someone I Love Will Die (Hello Saferide) (2005)",
"My Best Friend (Hello Saferide (2005))",
)
pattern = r"((.*) \((.*)\) \((\d*)\))|((.*) \((.*\((\d*)\))\))"
for line in the_lines:
title, artist, year = re.split(pattern, line)
print(title, artist, year)
但是这个结果是redundant,它得到8个组
纯Python:
您的规范并不真正需要REs,对于每一行,看起来您可以使用
artist_song_year = line.split("(")
,然后使用额外的清理步骤,如artist_song_year = [item.strip(")").strip(")") for item in artist_song_year]
你可以试试这个
相关问题 更多 >
编程相关推荐