删除逗号并将字符串更改为float

时间:2014-03-20 05:16:29

标签: python python-2.7

我想找到"钱"在一个文件中并将字符串更改为float,例如,我使用正则表达式来查找" $ 33,326"并希望更改为[33326.0," $"](即删除逗号并更改为浮动)。我写了以下函数,但它给了我错误

import locale,re
def currencyToFloat(x):
    empty = []
    reNum = re.compile(r"""(?P<prefix>\$)?(?P<number>[.,0-9]+)(?P<suffix>\s+[a-zA-Z]+)?""")
    new = reNum.findall(x)
    for i in new:
        i[1].replace(",", "")
        float(i[1])
        empty.append(i[1])
        empty.append(i[0])
    return empty

print currencyToFloat("$33,326")

你可以帮我调试我的代码吗?谢谢

3 个答案:

答案 0 :(得分:2)

money = "$33,326"
money_list = [float("".join(money[1:].split(","))), "$"]
print(money_list)

输出

[33326.0,'$']

答案 1 :(得分:0)

当你这样做时

float(i[1])

你没有修改任何东西。您应该将结果存储在某个变量中,例如:

temp = ...

但要转换为float你的号码必须有一个点,而不是逗号,所以你可以这样做:

temp = i[1].replace(",", ".")

然后将其转换为浮动并追加到列表中:

empty.append(float(temp))

注意:

您应该知道的重要事项是,当您遍历列表时,例如

for i in new:

i是每个元素的副本,因此如果您修改它,则不会在列表new中进行任何更改。要修改列表,您可以迭代索引:

for i in range(len(new)):
    new[i] = ...

答案 2 :(得分:0)

您可以使用str.translate()

>>>money= "$333,26"
>>>float(money.translate(None, ",$"))
33326.0