我有带有分隔符A
和B
的字符串列表
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']]
如何获得所需的输出?
发布于 2017-02-08 17:44:13
您可以使用re.split
在'A'
或'B'
上断开字符串
>>> L1 = [re.split(r'[AB] *', inputtext)[-1] for inputtext in L]
>>> L1
['aaa', 'ffff', 'eeee', 'rrr']
发布于 2017-02-08 18:29:13
即使split
没有找到分隔符,也可以使用它返回一个列表这一事实。
L1 = [[x.split(' A ')[-1].split(' B ')[-1]] for x in L]
发布于 2017-02-08 17:56:42
如果您希望它不仅仅适用于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']
https://stackoverflow.com/questions/42109419
复制相似问题