1. 盤點(diǎn)一個列表中字符串替換的基礎(chǔ)題目

        共 6415字,需瀏覽 13分鐘

         ·

        2022-07-13 21:41

        點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書

        幾時杯重把,昨夜月同行。

        大家好,我是Python進(jìn)階者。

        一、前言

        前幾天在Python最強(qiáng)王者交流群【Chloe】問了一道Python基礎(chǔ)的問題,如下圖所示。

        原始數(shù)據(jù)如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']

        說白了,就是字符串替換。

        二、實(shí)現(xiàn)過程

        方法一

        這里【瑜亮老師】給了一個方法,代碼如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        temp = '----'.join(lst)
        for i in char_lst:
            temp = temp.replace(i, '')
        res = temp.split('----')
        res = list({i.strip() for i in res})
        print(res)

        一個replace搞定,結(jié)果如下圖所示:

        方法二

        這里【杰】給了一個稍微復(fù)雜的代碼,如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        flag = 0
        set_1 = set()
        for ls in lst:
            for ch in char_lst:
                if ls.endswith(ch):
                    set_1.add(ls.rstrip(ch).strip())
                    flag = 1
            if flag == 0:
                set_1.add(ls)
            else:
                flag = 0
        new_lis = list(set_1)
        print(new_lis)

        運(yùn)行結(jié)果如下所示:

        也是可以滿足要求的。

        方法三

        這里【flag != flag】給了一個正則表達(dá)式的方法,代碼如下所示:

        import re
        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        s = ''.join(lst+char_lst)
        dct = {i: 1 for i in re.compile(r'([A-Z][a-z]+)').findall(s)}
        lis = list(dct.keys())
        print(lis)

        運(yùn)行結(jié)果如下所示:

        方法四

        這里【瑜亮老師】又給了一個集合方法,代碼如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        res1 = {i for i in lst if char_lst[0] not in i and char_lst[1] not in i and char_lst[2] not in i}
        res2 = {i.strip(j).strip() for i in lst for j in char_lst if j in i}
        res1.update(res2)
        res = list(res1)
        print(res)

        運(yùn)行結(jié)果如下所示:

        方法五

        這里【瑜亮老師】基于【flag != flag】大佬的代碼,略作修改,字典推導(dǎo)式改成集合推導(dǎo)式,又給了一個方法,代碼如下所示:

        import re
        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        s = ''.join(lst+char_lst)
        st = {i for i in re.compile(r'([A-Z][a-z]+)').findall(s)}
        lis = list(st)
        print(lis)

        運(yùn)行結(jié)果如下所示:

        方法六

        這里【瑜亮老師】基于嵌套for循環(huán)+break版,又給了一個方法,代碼如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        st = []
        for i in lst[:]:
            for j in char_lst:
                if ' ' in i:
                    st.append(i[:i.find(' ')])
                    break
                elif j in i:
                    st.append(i[:i.find(j)])
                    break
                else:
                    st.append(i)
                    break
        res = list(set(st))
        print(res)

        運(yùn)行結(jié)果如下所示:

        方法七

        這里【flag != flag】又給了一個方法,代碼如下所示:

        lst = ['Redcolor''Orange#''Green''Orange@'"White"]
        char_lst = ['#''color''@']
        for i in char_lst:
            for index, item in enumerate(lst):
                if i in item:
                    new_item = item.replace(i, '').strip()
                    lst[index] = new_item
                    if lst.count(new_item) > 1:
                        del lst[lst.index(new_item)]
        print(lst)

        結(jié)果如下圖所示:

        后來【瑜亮老師】針對這個代碼,稍微優(yōu)化了下,代碼如下所示:

        lst = ['Red color''Orange#''Green''Orange @'"White"]
        char_lst = ['#''color''@']
        for i in char_lst:
            for index, item in enumerate(lst):
                if i in item:
                    new_item = item.replace(i, '').strip()
                    if new_item not in lst:
                        lst[index] = new_item
                    else:
                        del lst[lst.index(item)]
        print(lst)

        結(jié)果如下圖所示:

        方法很多,有的方法可能直接跳出了題意之外,硬生生的給解決了,不過問題不大!

        如果有遇到問題,隨時聯(lián)系我解決,歡迎加入我的Python學(xué)習(xí)交流群。

        三、總結(jié)

        大家好,我是Python進(jìn)階者。這篇文章主要盤點(diǎn)了一道Python列表中字符串替換的問題,文中針對該問題給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問題。

        最后感謝粉絲【Chloe】提問,感謝【瑜亮老師】、【杰】、【flag != flag】給出的思路和代碼解析,感謝【dcpeng】、【此類生物】等人參與學(xué)習(xí)交流。

        小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

        ------------------- End -------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群

        萬水千山總是情,點(diǎn)個【在看】行不行

        /今日留言主題/

        隨便說一兩句吧~~

        瀏覽 72
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 盛世大厦洗手间王经理视频 | 欧美丝袜足交 | 国产又粗又猛又大爽又黄同志 | 日韩视频欧美 | 三上悠亚一区 |