【问题标题】:Extract text with multiple separators提取具有多个分隔符的文本
【发布时间】:2017-06-25 20:27:25
【问题描述】:

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

我怎样才能得到想要的输出?

【问题讨论】:

    标签: python regex string list


    【解决方案1】:

    没有regex 的替代建议。

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

    结果

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 该死的我有LL = [re.split("[AB]",x)[-1].strip() for x in L] :)
      • 我想如果你的AB总是用空格括起来,你最好使用r' +[AB] +'(或r'\s+[AB]\s+')。
      【解决方案3】:

      如果您希望它不仅仅适用于 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】:
        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
        

        【讨论】:

          【解决方案5】:

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

           L1 = [[x.split(' A ')[-1].split(' B ')[-1]] for x in L]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-05-22
            • 2016-01-03
            • 2021-05-16
            • 1970-01-01
            • 1970-01-01
            • 2015-01-29
            • 1970-01-01
            • 2021-04-14
            相关资源
            最近更新 更多