我是python正则表达式的初学者.我达到了我所需要的,但是由于缺少经验,这真的很丑.我的目标是转换以下形式的字符串数组:

notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]

到一个float数组,这样上面的数组将产生:

changes = [10.0,-5.0,0,-21.2]

下面的代码实现了这一点,但确实是重复的和糟糕的样式.我该如何优化呢?

changes = []

for note in notes:

m = re.search(r"(?:(\d+\.\d+\%\shigher)|(\d+\.\d+\%\slower)|(Same\sas))", note)

if m:

if m.groups(0):

if m.groups(0)[0]:

changes += [float(re.match(r"(\d+\.\d+)", m.groups(0)[0]).groups(0)[0])]

elif m.groups(0)[1]:

changes += [-float(re.match(r"(\d+\.\d+)", m.groups(0)[1]).groups(0)[0])]

else:

changes += [0.0]

print changes

解决方法:

使用findall可以在单个正则表达式中执行此操作:

notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]

changes = []

for note in notes:

m = re.findall("(?:(\d+\.\d+)% )?(higher|lower|Same as)", note)

if len(m):

if m[0][1] == 'higher':

changes += [float(m[0][0])]

elif m[0][1] == 'lower':

changes += [-float(m[0][0])]

else:

changes += [0.0]

print changes

标签:python,regex

python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组相关推荐

  1. python re正则提取ip地址_python 正则表达式匹配IP地址

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...

  2. python正则匹配ip地址_Python正则表达式匹配和提取IP地址

    Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}.){3 ...

  3. python re正则提取ip地址_Python正则表达式匹配和提取IP地址

    No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}\.){3}[0-9 ...

  4. python正则匹配ip地址_Python正则表达式匹配ip地址实例

    Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...

  5. python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...

  6. python正则匹配ip地址_python 正则表达式匹配IP地址

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...

  7. python正则匹配任意字符_Python 正则表达式 匹配任意字符

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*') >>> ...

  8. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 发布时间:2020-10-15 08:38:48 来源:脚本之家 阅读:94 作者:杰瑞26 在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任 ...

  9. js replace正则匹配替换多个不同字符串的实现方法

    在实际项目开发中,经常会遇到需要替换字符串的情况,简单的使用replace替换指定的一种字符串相信处理起来基本都没啥问题,但遇到一些比较复杂的替换字符串的场景如:需要替换多个不同的字符串,每次正则匹配 ...

最新文章

  1. 在线作图|2分钟在线绘制三维CCA图
  2. Request.Browser.Crawler 属性的工作原理分析
  3. Selenium2+python自动化33-文件上传(send_keys)
  4. Incption 介绍 mysql_Inception使用详解
  5. [翻译] GiFHUD
  6. 整理一波数组去重方法
  7. 合成器插件Sylenth1 2.2.1绿化版亲测有效
  8. Transmission搭建BT下载服务器
  9. 十大BI报表可视化工具
  10. LabVIEW使用VI Server的时候出现1003错误
  11. ZeroMemory、memset 和 “={0}” 三者区别
  12. 记录:remote: You are not allowed to push code to this project...【亲测有效】
  13. mtk平台的gpio控制
  14. 项目经理如何让自己更强大,执行力很关键
  15. SAP_PS常用增强
  16. 四川翌加:抖音发日常和发作品哪里不一样
  17. kktv支持鸿蒙系统,康佳发布了一款锤子系统手机 S5内置Smartisan OS
  18. 阿姨来了58到家竞品分析报告
  19. 扑克牌游戏java代码_java实现简易扑克牌游戏
  20. Java波峰波谷最小值问题

热门文章

  1. 你可能不知道的按位与、或运算技巧
  2. Newbe.ObjectVisitor 0.2.10 发布,更花里胡哨
  3. 在 WSL2.0 的 Ubuntu 18 里使用 Docker
  4. TechEmpower Web 框架性能第19轮测试结果正式发布,ASP.NET Core在主流框架中拔得头筹...
  5. 还不明白可空类型原理? 我可要挖到底了
  6. 感谢所有支持wuhan2020项目的朋友!我们招换更多人加入!
  7. TestinPro应用与DevOps之路
  8. EF Core中避免贫血模型的三种行之有效的方法(翻译)
  9. C#中字段、属性、只读、构造函数赋值、反射赋值的相关
  10. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)