免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13610 | 回复: 11
打印 上一主题 下一主题

怎么去小数点后面的0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-25 10:05 |只看该作者 |倒序浏览
我要改的数字是4.800000g(240.0ml)×1.000000
需要的结果是4.8g(240ml)×1
请大家帮我看下这该怎么编
谢谢大家了

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
2 [报告]
发表于 2011-10-25 11:59 |只看该作者
>>>'%sg (%sml)x%s' %(round(4.800000,1),round(240.0),round(1.000000))
'4.8g (240ml)x1'

论坛徽章:
0
3 [报告]
发表于 2011-10-25 12:40 |只看该作者
那如果g 和ml 是不确定的单位下,该怎么表示,
就比如列表是这样的:
4.800000g(240.0ml)×1.000000
0.010000mg(0.5ml)×1
0.050000mg×1
这该怎么做……
谢谢楼上的高手~

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
4 [报告]
发表于 2011-10-25 17:06 |只看该作者
使用同样的方法试试,不过,0.01四舍五入后就成为0.0了,可以保留两位小数round(0.010000,2)

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
5 [报告]
发表于 2011-10-25 17:12 |只看该作者
更好的作法应该是使用正则表达式把数字后面的一串零全去掉

论坛徽章:
0
6 [报告]
发表于 2011-10-25 17:25 |只看该作者
>>> ab=u'10.000000mg(5.0ml)×5.000000'
>>> import re
>>> tempList=re.findall(u'[0-9.]+',ab)
>>> tempList
[u'10.000000', u'5.0', u'5.000000']
>>> for y in tempList:               
                numberResult=re.search('[^0](.*)[^0]',y).group()
                if numberResult[-1]==u'.':
                    numberResult=numberResult[:-1]
                elif numberResult[0]==u'.':
                    numberResult=u'0'+numberResult
                ab=ab.replace(y,numberResult)

               
>>> ab
u'10mg(5ml)\xa1\xc1500000'
>>> print ab
10mg(5ml)?á500000
>>> numberResult
u'5'
>>> y
u'5.000000'
>>> ab
u'10mg(5ml)\xa1\xc1500000'

最后别忘了把replace参数,换成1次就对了

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-07-05 06:20:00
7 [报告]
发表于 2011-10-25 23:35 |只看该作者
本帖最后由 dacheng 于 2011-10-26 08:37 编辑

>>> import re
>>> a=['4.80000g','0.50000mg','0.001230000g']
>>> p=re.compile(r'(\d\.)(0*[1-9]*)(0*)(g|mg)')
>>> for i in a:
...         print(p.sub(r'\1\2\4',i))
...
4.8g
0.5mg
0.00123g
注意,我的环境是python3.2

论坛徽章:
0
8 [报告]
发表于 2011-10-26 13:55 |只看该作者
>>> import re
>>> a=['4.80000g','0.50000mg','0.001230000g']
>>> p=re.compile(r'(\d\.)(0*[1-9]*)(0* ...
dacheng 发表于 2011-10-25 23:35



    正则用的很好啊

论坛徽章:
0
9 [报告]
发表于 2011-10-27 10:06 |只看该作者
谢谢高手们~

论坛徽章:
0
10 [报告]
发表于 2011-10-27 15:49 |只看该作者
本帖最后由 zyd320 于 2011-10-27 15:51 编辑

回复 7# dacheng


你的正则表达式似乎有点问题,
比如4.0808000这个测试数据不能匹配你的正则表达式。
这个应该好一点:
  1. >>>p=re.compile(r'0*(g|mg)$')
  2. >>> print p.sub(r'\1','4.0808000g')
  3. 4.0808g
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP