我有一个乱七八糟的 txt 文件,点为千分号(1.000 或 19.329)和小数点(10000.3)。两个示例行:
John;1.952;2003;20.365;1.214
Ryan;2.342;2002;3045.3;345
我想删除千位标记的点并保留小数点。最简单的方法是什么?
假设小数总是只有一位:
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)
我不认为有一个非常简单的方法可以做到这一点。
如果小数点后的小数点后永远不会精确到三个小数位,则可以执行以下操作:
>>> import re
>>> re.sub(r"\.(\d\d\d(\D|$))", r"\1", "200.000.5")
'200000.5'
如果正则表达式后跟恰好三个数字,则删除一个点。它不会匹配更少的数字(因为它会寻找三个\d
),并且它不会匹配更多的数字,因为它会在它们之后寻找一个非数字(\D
)。
这取决于您的数字的精度。文本文件中的数字有多少位小数?如果它小于 3,那么它应该是微不足道的。如果它是 3 或更多,我不确定它是否可以在没有错误的情况下完成。