簡體   English   中英

千分和小數點的分數

[英]Points for thousand mark and decimal mark

我有一個混亂的txt文件,點數為千分(1.000或19.329)和小數點(10000.3)。 兩個示例行:

John;1.952;2003;20.365;1.214 

Ryan;2.342;2002;3045.3;345

我想刪除千分的點並保留小數點。 最簡單的方法是什么?

如果您在小數點后面沒有正好三位小數,則以下內容將執行此操作:

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

如果正好跟隨正好三位數,正則表達式將刪除一個點。 它不會匹配較少的數字(因為它會查找三個\\d ),並且它將不會匹配更多,因為它在它們之后尋找非數字( \\D )。

假設小數始終只有一位數:

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)

我認為沒有一種非常簡單的方法可以做到這一點。

這取決於你的數字的精確度。 文本文件中的數字有多少小數位? 如果它小於3,那么它應該是微不足道的。 如果它是3或更多,我不確定如果沒有至少一些錯誤就可以完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM