首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获\n [字符串] \n之间的字符串

捕获\n [字符串] \n之间的字符串
EN

Stack Overflow用户
提问于 2019-10-16 11:13:08
回答 2查看 160关注 0票数 1

我试图解析YouTube对歌曲的描述,将其编译成一个.csv

目前,我可以隔离时间,虽然尝试孤立歌曲和艺术家是更棘手的。

首先,我抓到了白沙

代码语言:javascript
复制
# catches whitespace
pattern = re.compile(r'\s+')

第二,timecodes (使字符串更容易处理)

代码语言:javascript
复制
# catches timecodes
pattern1 = re.compile(r'[\d\.-]+:[\d.-]+:[\d\.-]+')

然后我潜入并移除。

然后我尝试捕获\n之间的所有字符串,因为tracklist是这样格式化的

代码语言:javascript
复制
songBeforeDash = re.search(r'^([\\n][a-zA-Z0-9]*-[a-zA-Z0-9]*[\\n]*)+$', description)

格式遵循\nstring-string\n

使用这个出色的视觉,我已经能够调整它,以便它捕获第一个结果,但是任何后续的结果都不匹配。这是一种在第一次结果时停下来却没有抓住其他结果的情况吗?

这是我想要抓到的东西的样本

代码语言:javascript
复制
\nmiddleschoolxAso-Cypress\nShopan-Woodnot\nchromonicci-Memories.\nYasper-MoveTogether\nFenickxDelayde-Longwayhome\nauv-Rockaway5pm\nsadtoi-Aires\nGMillsxKyleMcEvoy-Haze\nRuckP-CoffeeBreak\n
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-16 11:26:01

您可以使用split()来完成这一任务。

代码语言:javascript
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2019-10-16 11:25:40

re.search只返回字符串中的第一个匹配项。您想要的是使用re.findall,它返回所有匹配。

编辑-由于匹配将重叠,我建议编辑regex以捕获到下一个换行符。现在它们不能重叠。考虑将regex改为:

代码语言:javascript
复制
r'^([\\n][a-zA-Z0-9]*-[a-zA-Z0-9]*)+$'

如果您想让它们重叠(这意味着您也想捕获换行符),我建议查看这里,看看如何捕获重叠的正则表达式模式。

此外,正如@ChatterOne所建议的那样,假设没有其他类型的信息存在,使用str.split(分离器)方法在这里会很好。

代码语言:javascript
复制
descriptor.split('\n')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58411975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档