我有一个混乱的txt文件,点数为千分(1.000或19.329)和小数点(10000.3)。两个示例行:
John;1.952;2003;20.365;1.214
Ryan;2.342;2002;3045.3;345
我想删除千分的点,并保留小数点。最简单的方法是什么?
答案 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或更多,我不确定是否可以在没有某些错误的情况下完成。