首页 > 编程语言 >盘点一个Python列表(元素多样)处理的实战题目(使用正则表达式也可以实现)

盘点一个Python列表(元素多样)处理的实战题目(使用正则表达式也可以实现)

时间:2022-10-11 07:44:05浏览次数:43  
标签:item Python 代码 正则表达式 lst 盘点 l2 new

大家好,我是Python进阶者。

一、前言

前几天在Python白银交流群【凡人不烦人】问了一个Python列表处理的问题,提问截图如下:

下面是他的部分数据:

lst = ['(问答题)(2) 假设镀锌钢管', 'http://admintk.sc.zzstep.com/UpLoadImage/2019-10-10/a84f340e-6c67-42b1-8eae-3dc142818492.png)15暗配的清单工程量为50m,其余条件不变,依据上述相关定额计算分析镀锌钢管', 'http://admintk.sc.zzstep.com/UpLoadImage/2019-10-10/a84f340e-6c67-42b1-8eae-3dc142818492.png)15暗配项目的综合单价,并填入“工程量清单综合单价分析表”中。']

二、实现过程

这里【dcpeng】给了一份代码,如下所示:

lst = [元素列表]
# print(len(lst))
new_lst = [lst[0]]
for item in lst[1:]:
    new_item = item.split(')')
    new_lst.extend([new_item[0], new_item[1]])
print(len(new_lst))
print(new_lst)

可以得到预期的结果:

后来【甯同学】也给了一个代码,如下图所示:

代码很秀,叹为观止!

后来他自己又遇到了一个新需求,如下图所示:

看上去还是挺复杂的,用上面的代码已经不能满足了,后来他自己提供了一份代码,如下图所示:

l1 = sum([*map((lambda x: x.split(')') if 'png)' in x else [x]), lists)], [])
l1 = [x for x in l1 if x != '']
l2 = []
nums = []
for j, item in enumerate(l1):
    if 'png' in item:
        if item[0] != '!':
            b = ' '.join(l1[j - 1:j + 1]).split('![](')
            nums.append(j)
        else:
            b = item.split('![](')
            b = [x for x in b if x != '']
        l2.extend(b)
    else:
        l2.append(item)
lists = [l2[j] for j in range(len(l2)) if j+1 not in nums]

相当于方法一和方法二的结合版本,总算搞定了。

后来他发了源码之后,【瑜亮老师】给了一份代码,使用正则表达式很快搞定,代码如下:

import re
data = '你上面发的这个字符串'
temp = re.findall(r'>(.*?)<|src="(.*?)"', data)
result = [i.replace('\u3000', ' ') for j in temp for i in j if i != '']
print(result)

【瑜亮老师】的正则表达式使用还是6啊!

不过他后面还陆陆续续发不同的源码出来,每次发一个需求,就要改一次代码,让人也难顶。

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Python正则表达式处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【凡人不烦人】提问,感谢【dcpeng】、【甯同学】、【瑜亮老师】给出的思路和代码解析,感谢【此类生物】、【猫药师Kelly】、【斌】、【ᯤ⁶ᴳ】等人参与学习交流。

标签:item,Python,代码,正则表达式,lst,盘点,l2,new
From: https://www.cnblogs.com/dcpeng/p/16777993.html

相关文章

  • python基础
    编程语言介绍特点跨平台性执行效率开发效率机器语言二进制编码差三者中最高三者中最差汇编语言英文字符代替二进制差中中高级语言编译型、解......
  • Python:从入门到进阶
    导读本文将推荐一个Github开源项目:python-tutorial。本Python教程包含了一些范例,涵盖了大多数Python日常脚本任务,是入门Python的学习资料,也可以作为工作中编写Python脚本......
  • 学习python-Day70
    今天学习内容一、自定义频率类fromrest_framework.throttlingimportBaseThrottleclassMyThrottle(BaseThrottle):VISIT_RECORD={}#存放用户访问记录{ip......
  • Python爬虫四(正则表达式)
    菜鸟教程之python正则表达式:​​http://www.runoob.com/python/python-reg-expressions.html​​python官网正则文档:​​https://docs.python.org/2/library/re.html​......
  • 辨别 Python 中 load 和 loads 的小技巧
      load和loads都是实现“反序列化”,load通过json.load(open('*.json'))这样的格式,从文件句柄中打开文件,加载到Python的变量中,并以字典的格式转换。而loads必须对......
  • Python 日期 的 加减 等 操作
     datetime—Basicdateandtimetypes:​​https://docs.python.org/3.8/library/datetime.html​​dateutil---powerfulextensionstodatetime:​​https://dateutil......
  • 怎么可以少了“雪融融”呢?python在画一个雪蓉蓉陪着“冰墩墩”
    公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式计算机视觉研究院专栏作者:Edison_G冬奥会如火如荼的举行中,吉祥物之一的冰墩墩特别抢手!身为程序员,已经拥有一个“虚......
  • LMS Virtual.Lab二次开发:声学仿真理论基础准备(Python)
    1、简介采用LMSVirtual.LabAcoustics声学软件,可以直接打开CATIAV5的设计模型、或者间接导入其它CAD软件的三维模型,实现从声学模型创建、复杂边界条件加载、快速求解计算......
  • python词云剔除非有效词
    title:python词云剔除非有效词excerpt:python爬虫小作业2.0tags:[python,词云,爬虫]categories:[学习,python]index_img:https://picture-store-repository.......
  • CentOS7下安装python3.8卸载3.6
    title:CentOS7下安装python3.8卸载3.6excerpt:VM记得拍快照!拍快照!快照!tags:[语音识别,kaldi,python3,python2,centos7]categories:[学习,python][学习,语......