【问题标题】:How to skip empty substring while splitting a list into a sublist based on a char separator如何在基于字符分隔符将列表拆分为子列表时跳过空子字符串
【发布时间】:2020-05-19 03:12:53
【问题描述】:

我有以下列表

list_big = ['90', '=', 'C', '44', '=']

我想要的输出是连接'=' 之间的所有字符串,如下所示:

list_smaller = ['90', 'C44']

我跑:

list_smaller = [l.split(',') for l in ','.join(list_big).split('=')]

但我明白了:

list_smaller = [['90', ''], ['', 'C', '44', ''], ['']]

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

【问题讨论】:

    标签: python python-3.x string list split


    【解决方案1】:

    您可以使用以下列表理解;加入一个空字符串,而不是逗号,然后只将不是空字符串的元素放入列表中,使用if l

    >>> [l for l in ''.join(list_big).split('=') if l]
    ['90', 'C44']
    

    【讨论】:

      【解决方案2】:

      那是因为你用',' 加入字符串,如果你删除它应该没问题:

      list_smaller = [i for i in ''.join(list_big).split('=') if i]
      

      下次尝试拆分您的列表理解,以便您了解发生了什么:

      list_big = ['90', '=', 'C', '44', '=']
      joined_list_big = ','.join(list_big).split('=')
      joined_list_big
      ['90,', ',C,44,', '']
      

      在这里你可以看到这不是你想要的

      【讨论】:

        【解决方案3】:

        你可以使用 for 循环:

        new_list = []
        
        aux = ''
        for item in list_big:
            if item != '=':
                aux += item
            else:
                new_list.append(aux)
                aux = ''
        
        if aux:
            new_list.append(aux)
        
        print(new_list)
        

        输出:

        ['90', 'C44']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-01
          • 2020-12-01
          • 2018-10-24
          • 2017-06-01
          • 2019-03-27
          • 1970-01-01
          • 1970-01-01
          • 2018-05-16
          相关资源
          最近更新 更多