繁体   English   中英

使用多个分隔符提取文本

[英]Extract text with multiple separators

我有分隔符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']] 

如何获得所需的输出?

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM