首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >千分点和小数点

千分点和小数点
EN

Stack Overflow用户
提问于 2013-06-28 03:38:39
回答 3查看 117关注 0票数 0

我有一个乱七八糟的txt文件,点数是一个千分(1.000或19.329)和一个十进制数(10000.3)。两个示例行:

代码语言:javascript
复制
John;1.952;2003;20.365;1.214 

Ryan;2.342;2002;3045.3;345

我想去掉千位数的点,保留小数点。做这件事最简单的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-28 03:45:55

如果小数点后没有恰好三位小数点,则可以使用以下命令:

代码语言:javascript
复制
>>> import re
>>> re.sub(r"\.(\d\d\d(\D|$))", r"\1", "200.000.5")
'200000.5'

如果一个点后面紧跟三位数字,则regexp会删除该点。它不会匹配更少的数字(因为它查找三个\d),也不会匹配更多,因为它在它们之后查找非数字(\D)。

票数 1
EN

Stack Overflow用户

发布于 2013-06-28 03:55:10

假设小数始终只有一位数:

代码语言:javascript
复制
line = "Ryan;2.342;2002;3045.3;345"
parts = line.split(";")

#Remove the name.
name = parts.pop(0) 

def fix(part):
    decimal = ""
    if part[-2] == '.':
        decimal = part[-2:]
        part = part[:-2]
    part = part.replace('.',',')
    return part+decimal

parts = [fix(part) for part in parts]
line = name+";"+";".join(parts)

我不认为有一个非常简单的方法来做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2013-06-28 03:41:58

这取决于你数字的精确度。文本文件中的数字有多少位小数?如果它小于3,那么它应该是微不足道的。如果它是3或更多,我不确定它是否可以做到至少没有一些错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17351809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档