【问题标题】:How to remove unwanted elements from list using python如何使用python从列表中删除不需要的元素
【发布时间】:2021-01-02 03:51:17
【问题描述】:

我有一个输入列表:

list_1 = ['29','560001','08067739333','560037002','29AAACC0462F1Z0','55XX1XXX19','07S23X09','98561XXX1X9']

我试过了:

output_list = [i for i in list_1 if 'X' in i or i.isnumeric()==True]

给出错误的额外元素“07S23X09”:

output_list = ['29','560001','08067739333','560037002','55XX1XXX19','07S23X09','98561XXX1X9']

预期输出是带有数字的列表以及带有数字和特定字符 X 的元素,否则应丢弃其他元素:

output_list = ['29','560001','08067739333','560037002','55XX1XXX19','98561XXX1X9']

【问题讨论】:

    标签: python regex list arraylist


    【解决方案1】:

    你可以使用

    import re
    list_1 = ['29','560001','08067739333','560037002','29AAACC0462F1Z0','55XX1XXX19','07S23X09','98561XXX1X9']
    rx = re.compile('[0-9X]+')
    print ( [x for x in list_1 if rx.fullmatch(x)] )
    # => ['29', '560001', '08067739333', '560037002', '55XX1XXX19', '98561XXX1X9']
    

    请参阅Python demo

    使用re.fullmatch('[0-9X]+', x),您只保留完全由数字或X 字符组成的项目。

    ^[0-9X]+$regex demo

    注意:如果字符串中必须至少有一位数字,即如果您想失败并因此丢弃所有只是XXX的项目,您可以使用

    ^X*[0-9][0-9X]*$
    

    或者,^(?=X*[0-9])[0-9X]+$。请参阅regex demo

    【讨论】:

      【解决方案2】:

      怎么样: output_list = [i for i in list_1 if i.replace('X', '').isnumeric()==True]

      你似乎想要所有的数字,但如果它是一个“X”就可以了。因此,如果您删除 X 并检查数字,就可以解决问题。

      【讨论】:

        【解决方案3】:

        这可以使用 python 正则表达式轻松完成,如下所示

        import re
        
        list_1 = ['29','560001','08067739333','560037002','29AAACC0462F1Z0','55XX1XXX19','07S23X09','98561XXX1X9']
        
        l2 = re.sub('[a-zA-VY-Z]', "", str(list_1))  # delete unwanted characters which are lowercase and uppercase letters from a to v and Y-Z since we only need to preserve uppercase letter X
        
        print(l2)
        

        输出

        ['29', '560001', '08067739333', '560037002', '29046210', '55XX1XXX19', '0723X09', '98561XXX1X9']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-22
          • 2017-01-05
          • 1970-01-01
          相关资源
          最近更新 更多