使用多个分隔符提取文本

时间:2017-02-08 09:37:00

标签: python regex string list

我有包含分隔符AB的字符串列表:

L = ['sgfgfqds A aaa','sderas B ffff','eeee','sdsdfd A rrr']

并且需要:

L1 = [['aaa'], ['ffff'], ['eeee'], ['rrr']] 

我尝试使用:

L1 = [re.findall(r'(?<=A)(.*)$', inputtext) for inputtext in L]
print (L1)

但是,它返回以下内容:

[[' aaa'], [], [], [' rrr']] 

如何获得所需的输出?

5 个答案:

答案 0 :(得分:21)

您可以使用re.split打破'A''B'上的字符串:

>>> L1 = [re.split(r'[AB] *', inputtext)[-1] for inputtext in L]
>>> L1
['aaa', 'ffff', 'eeee', 'rrr']

答案 1 :(得分:6)

没有regex的替代建议。

[[i] for i in ' '.join(L).split(' ') if i.count(i[0]) == len(i) and len(i) > 1]

<强>结果

 [['aaa'], ['ffff'], ['eeee'], ['rrr']]

答案 2 :(得分:6)

您可以使用(new \DateTime('2017-02-04 03:52:04'))->format('r'); 返回列表的事实,即使它没有找到分隔符。

split

答案 3 :(得分:2)

如果您希望仅使用A或B,则可以使用

>>> 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']

答案 4 :(得分:1)

let propDef = Reflect.getOwnPropertyDescriptor(MyClass.prototype, 'a');
propDef.get = function() { 
    // ...
}