首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用多个分隔符提取文本

使用多个分隔符提取文本
EN

Stack Overflow用户
提问于 2017-02-08 17:37:00
回答 4查看 2K关注 0票数 18

我有带有分隔符AB的字符串列表

代码语言:javascript
复制
L = ['sgfgfqds A aaa','sderas B ffff','eeee','sdsdfd A rrr']

和需求:

代码语言:javascript
复制
L1 = [['aaa'], ['ffff'], ['eeee'], ['rrr']] 

我尝试使用:

代码语言:javascript
复制
L1 = [re.findall(r'(?<=A)(.*)$', inputtext) for inputtext in L]
print (L1)

但是,它返回以下内容:

代码语言:javascript
复制
[[' aaa'], [], [], [' rrr']] 

如何获得所需的输出?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-02-08 17:44:13

您可以使用re.split'A''B'上断开字符串

代码语言:javascript
复制
>>> L1 = [re.split(r'[AB] *', inputtext)[-1] for inputtext in L]
>>> L1
['aaa', 'ffff', 'eeee', 'rrr']
票数 21
EN

Stack Overflow用户

发布于 2017-02-08 18:29:13

即使split没有找到分隔符,也可以使用它返回一个列表这一事实。

代码语言:javascript
复制
 L1 = [[x.split(' A ')[-1].split(' B ')[-1]] for x in L]
票数 6
EN

Stack Overflow用户

发布于 2017-02-08 17:56:42

如果您希望它不仅仅适用于A或B,您可以使用

代码语言:javascript
复制
>>> L = ['sgfgfqds A aaa','sderas B ffff','eeee','sdsdfd A rrr', 'lasjd X gggggg']
>>> L1 = [re.split(r'[A-Z] *', inputtext)[-1] for inputtext in L]
>>> print(L1)
['aaa', 'ffff', 'eeee', 'rrr', 'gggggg']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42109419

复制
相关文章

相似问题

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