如何处理小数点和千位分隔符的逗号
How to deal with commas for decimal AND thousand separator
由于这里不重要的原因,我有一个 excel sheet,其中我的数字用逗号表示小数点以及千位分隔符。
区分逗号是小数点还是千位分隔符的唯一方法是逗号后的位数:
decimal = 7,29
thousands = 23,767,209
我的方法是将数字作为字符串读入并执行以下代码:
strings = ["0", "87,390,112", "78", "9,27", "1"]
strings_new = []
for i in strings:
if len(i) >= 3:
# check if third last char is a comma --> decimal
if i[-3] == ',':
i = i[:-3] + '.' + i[-3 + 1:]
if len(i) >= 4:
# check if fourth last char is a comma --> all commas are thousands
if i[-4] == ',':
i = i.replace(",", "")
strings_new.append(i)
strings_new = [float(i) for i in strings_new]
输出看起来不错:
strings_new = [0.0, 87390112.0, 78.0, 9.27, 1.0]
这段代码有没有我没有想到的特殊情况?有没有更有效的方法来处理这个问题?
两种情况:
如果小数点只有一位:100,1
。使用 i.rfind(',')
获取逗号位置,而不是使用 -3
.
对其进行硬编码
如果同时包含两个条件:10,000,24
。它会绕过第二个 if 子句 (10,000.24
)。没有 if 子句的总是 运行 i.replace(",", "")
应该没问题。
由于这里不重要的原因,我有一个 excel sheet,其中我的数字用逗号表示小数点以及千位分隔符。 区分逗号是小数点还是千位分隔符的唯一方法是逗号后的位数:
decimal = 7,29
thousands = 23,767,209
我的方法是将数字作为字符串读入并执行以下代码:
strings = ["0", "87,390,112", "78", "9,27", "1"]
strings_new = []
for i in strings:
if len(i) >= 3:
# check if third last char is a comma --> decimal
if i[-3] == ',':
i = i[:-3] + '.' + i[-3 + 1:]
if len(i) >= 4:
# check if fourth last char is a comma --> all commas are thousands
if i[-4] == ',':
i = i.replace(",", "")
strings_new.append(i)
strings_new = [float(i) for i in strings_new]
输出看起来不错:
strings_new = [0.0, 87390112.0, 78.0, 9.27, 1.0]
这段代码有没有我没有想到的特殊情况?有没有更有效的方法来处理这个问题?
两种情况:
如果小数点只有一位:
100,1
。使用i.rfind(',')
获取逗号位置,而不是使用-3
. 对其进行硬编码
如果同时包含两个条件:
10,000,24
。它会绕过第二个 if 子句 (10,000.24
)。没有 if 子句的总是 运行i.replace(",", "")
应该没问题。