当前位置:  开发笔记 > 编程语言 > 正文

Python正则表达式分数

如何解决《Python正则表达式分数》经验,为你挑选了1个好方法。

我正在尝试使用正则表达式将小数(特别是1/2)的实例替换为十进制等效值

string = "7 1/2"
re.sub(r'[1/2]', '.5', string)

首先,我认为上面用.5替换了1,/,2的所有实例,而我试图找到并替换整个术语"1/2"

其次,你如何处理分数本身之前的领先空间?



1> Avinash Raj..:

一般解决方案应该如下所示,应该在替换部分中使用lambda函数re.sub.

>>> import re
>>> from __future__ import division
>>> s = "7 1/2"
>>> re.sub(r'(\d+)/(\d+)', lambda m: str(int(m.group(1))/int(m.group(2))), s)
'7 0.5'
>>> re.sub(r'(\d+)/(\d+)', lambda m: str(int(m.group(1))/int(m.group(2))), '7 9/2')
'7 4.5'

更新:

>>> re.sub(r'^(\d+)\s+(\d+)/(\d+)$', lambda m: str(float(int(m.group(1)) + int(m.group(2))/int(m.group(3)))), '7 9/2')
'11.5'

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有