删除逗号并更改字符串

2024-09-27 00:17:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在一个文件中找到“money”并将字符串更改为float,例如,我使用正则表达式查找“$33326”,并希望更改为[33326.0,“$”](即,删除逗号并更改为float)。我写了下面的函数,但它给了我错误

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")

你能帮我调试代码吗?谢谢


Tags: 文件函数字符串importrenew错误float
3条回答

当你这么做的时候

float(i[1])

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

^{pr2}$

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

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

然后将其转换为float并附加到列表中:

empty.append(float(temp))

注意:

重要的是,当你在列表中循环时,比如

for i in new:

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

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

您可以使用str.translate()

>>>money= "$333,26"
>>>float(money.translate(None, ",$"))
33326.0
money = "$33,326"
money_list = [float("".join(money[1:].split(","))), "$"]
print(money_list)

输出

[33326.0,'$']

相关问题 更多 >

    热门问题