0

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

John;1.952;2003;20.365;1.214 

Ryan;2.342;2002;3045.3;345

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

4

3 回答 3

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)

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

于 2013-06-27T19:55:09.820 回答
1

如果小数点后的小数点后永远不会精确到三个小数位,则可以执行以下操作:

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

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

于 2013-06-27T19:45:54.760 回答
0

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

于 2013-06-27T19:41:58.273 回答