我想找到"钱"在一个文件中并将字符串更改为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")
你可以帮我调试我的代码吗?谢谢
答案 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