[英]Extract text with multiple separators
我有分隔符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']]
如何获得所需的输出?
您可以使用re.split
在'A'
或'B'
上打破字符串:
>>> L1 = [re.split(r'[AB] *', inputtext)[-1] for inputtext in L]
>>> L1
['aaa', 'ffff', 'eeee', 'rrr']
没有regex
替代建议。
[[i] for i in ' '.join(L).split(' ') if i.count(i[0]) == len(i) and len(i) > 1]
结果
[['aaa'], ['ffff'], ['eeee'], ['rrr']]
即使找不到分隔符,您也可以使用split
返回列表的事实。
L1 = [[x.split(' A ')[-1].split(' B ')[-1]] for x in L]
如果您希望这不仅仅适用于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']
for a in L:
if 'A' in a or 'B' in a:
clist = a.split()
for c in clist:
if c[::-1] == c:
if c == 'A' or c == 'B':
pass
else:
#print "c1",c
result.append([c])
else:
pass
else:
result.append([a])
print result
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.