我试图解析YouTube对歌曲的描述,将其编译成一个.csv
目前,我可以隔离时间,虽然尝试孤立歌曲和艺术家是更棘手的。
首先,我抓到了白沙
# catches whitespace
pattern = re.compile(r'\s+')第二,timecodes (使字符串更容易处理)
# catches timecodes
pattern1 = re.compile(r'[\d\.-]+:[\d.-]+:[\d\.-]+')然后我潜入并移除。
然后我尝试捕获\n之间的所有字符串,因为tracklist是这样格式化的
songBeforeDash = re.search(r'^([\\n][a-zA-Z0-9]*-[a-zA-Z0-9]*[\\n]*)+$', description)格式遵循\nstring-string\n
使用这个出色的视觉,我已经能够调整它,以便它捕获第一个结果,但是任何后续的结果都不匹配。这是一种在第一次结果时停下来却没有抓住其他结果的情况吗?
这是我想要抓到的东西的样本
\nmiddleschoolxAso-Cypress\nShopan-Woodnot\nchromonicci-Memories.\nYasper-MoveTogether\nFenickxDelayde-Longwayhome\nauv-Rockaway5pm\nsadtoi-Aires\nGMillsxKyleMcEvoy-Haze\nRuckP-CoffeeBreak\n发布于 2019-10-16 11:26:01
您可以使用split()来完成这一任务。
t = '\nmiddleschoolxAso-Cypress\nShopan-Woodnot\nchromonicci-Memories.\nYasper-MoveTogether\nFenickxDelayde-Longwayhome\nauv-Rockaway5pm\nsadtoi-Aires\nGMillsxKyleMcEvoy-Haze\nRuckP-CoffeeBreak\n'
liste = t.split('\n')
liste = liste[1:-1:]
print(liste)发布于 2019-10-16 11:25:40
re.search只返回字符串中的第一个匹配项。您想要的是使用re.findall,它返回所有匹配。
编辑-由于匹配将重叠,我建议编辑regex以捕获到下一个换行符。现在它们不能重叠。考虑将regex改为:
r'^([\\n][a-zA-Z0-9]*-[a-zA-Z0-9]*)+$'如果您想让它们重叠(这意味着您也想捕获换行符),我建议查看这里,看看如何捕获重叠的正则表达式模式。
此外,正如@ChatterOne所建议的那样,假设没有其他类型的信息存在,使用str.split(分离器)方法在这里会很好。
descriptor.split('\n')https://stackoverflow.com/questions/58411975
复制相似问题