我有一个乱七八糟的txt文件,点数是一个千分(1.000或19.329)和一个十进制数(10000.3)。两个示例行:
John;1.952;2003;20.365;1.214
Ryan;2.342;2002;3045.3;345我想去掉千位数的点,保留小数点。做这件事最简单的方法是什么?
发布于 2013-06-28 03:45:55
如果小数点后没有恰好三位小数点,则可以使用以下命令:
>>> import re
>>> re.sub(r"\.(\d\d\d(\D|$))", r"\1", "200.000.5")
'200000.5'如果一个点后面紧跟三位数字,则regexp会删除该点。它不会匹配更少的数字(因为它查找三个\d),也不会匹配更多,因为它在它们之后查找非数字(\D)。
发布于 2013-06-28 03:55:10
假设小数始终只有一位数:
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-28 03:41:58
这取决于你数字的精确度。文本文件中的数字有多少位小数?如果它小于3,那么它应该是微不足道的。如果它是3或更多,我不确定它是否可以做到至少没有一些错误。
https://stackoverflow.com/questions/17351809
复制相似问题