打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
盘点一个列表中字符串替换的基础题目

几时杯重把,昨夜月同行。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群【Chloe】问了一道Python基础的问题,如下图所示。

原始数据如下所示:

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

说白了,就是字符串替换。

二、实现过程

方法一

这里【瑜亮老师】给了一个方法,代码如下所示:

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搞定,结果如下图所示:

方法二

这里【杰】给了一个稍微复杂的代码,如下所示:

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)

运行结果如下所示:

也是可以满足要求的。

方法三

这里【flag != flag】给了一个正则表达式的方法,代码如下所示:

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)

运行结果如下所示:

方法四

这里【瑜亮老师】又给了一个集合方法,代码如下所示:

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)

运行结果如下所示:

方法五

这里【瑜亮老师】基于【flag != flag】大佬的代码,略作修改,字典推导式改成集合推导式,又给了一个方法,代码如下所示:

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)

运行结果如下所示:

方法六

这里【瑜亮老师】基于嵌套for循环+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)

运行结果如下所示:

方法七

这里【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)

结果如下图所示:

后来【瑜亮老师】针对这个代码,稍微优化了下,代码如下所示:

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)

结果如下图所示:

方法很多,有的方法可能直接跳出了题意之外,硬生生的给解决了,不过问题不大!

如果有遇到问题,随时联系我解决,欢迎加入我的Python学习交流群。

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一道Python列表中字符串替换的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】、【杰】、【flag != flag】给出的思路和代码解析,感谢【dcpeng】、【此类生物】等人参与学习交流。

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
实现字符串转化为整数函数atoi()函数
uint32
字符串查找acm算法源代码
父亲节,程序员几条代码硬核示爱
C#自定义字符串替换Replace方法实例
《C语言程序设计》第三版课后答案
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服