千分和小数点的分数

时间:2013-06-27 19:38:39

标签: python points

我有一个混乱的txt文件,点数为千分(1.000或19.329)和小数点(10000.3)。两个示例行:

John;1.952;2003;20.365;1.214 

Ryan;2.342;2002;3045.3;345

我想删除千分的点,并保留小数点。最简单的方法是什么?

3 个答案:

答案 0 :(得分:1)

如果您在小数点后面没有正好三位小数,则以下内容将执行此操作:

>>> import re
>>> re.sub(r"\.(\d\d\d(\D|$))", r"\1", "200.000.5")
'200000.5'

正则表达式会删除一个点,如果它后跟正好三位数。它不会匹配较少的数字(因为它会查找三个\d),并且它将不会匹配更多,因为它在它们之后查找非数字(\D)。

答案 1 :(得分:1)

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

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)

我认为没有一种非常简单的方法可以做到这一点。

答案 2 :(得分:0)

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