Python 如何在将美元作为浮点数传递之前将其从值中删除?

Python 如何在将美元作为浮点数传递之前将其从值中删除?,python,python-3.5,Python,Python 3.5,我尝试了几种方法,从一列看起来像[$95800.50]的值中删除$ 我想对一列工资调用min和max,但首先我必须将其解析为浮动,但由于$的原因,我不能这样做 import csv f = open("Employee_Salaries_-_2014.csv") rows = csv.reader(f) next(rows) class employeeInfo: gender = "" salary = 0 title = "" employee = []

我尝试了几种方法,从一列看起来像[$95800.50]的值中删除
$

我想对一列工资调用
min
max
,但首先我必须将其解析为浮动,但由于
$
的原因,我不能这样做

import csv
f = open("Employee_Salaries_-_2014.csv") 
rows = csv.reader(f)
next(rows)   

class employeeInfo:
    gender = ""
    salary = 0
    title = ""

employee = []

for col in rows:
    e = employeeInfo()
    e.gender = col[1]
    e.salary = col[2]
    e.title = col[9]

    employee.append(e)
您可以尝试:

e.salary = col[2][1:]
您可以尝试:

e.salary = col[2][1:]
使用
.lstrip($”
从前面去除“$”。这样可以避免在代码前面没有“$”的情况下删除第一个字符
例如:

e.salary = col[2].lstrip("$")

BTW,考虑把你的工资存储在INT(所有的东西都是美分而不是美元),因为浮动不是精确的,例如0.1 + 0.2!= 0.3。或者你可以使用Python的内置库来代替。< /P> < P>使用<代码> .LaB(“$”)< /Cord> >“从前面。这样可以避免在代码前面没有“$”的情况下删除第一个字符
例如:

e.salary = col[2].lstrip("$")

BTW,考虑把你的薪水存入INT(用美分而不是美元做任何事情),因为浮点不准确,例如0.1 +0.2!= 0.3。或者你可以使用Python的内置库来代替。

< P>你可能没有意识到这一点,但是Python在转换成数字类型的时候不允许字符串中的逗号。 如果数据是字符串,则可以使用
translate
。如果是unicode,IIRC可能会出现一些边缘情况,
replace
是更好的选择

e.salary = col[2].translate(None, '$,')
e.salary = col[2].replace('$', '').replace(',','')
建议使用上面的
col[2].lstrip(“$”)
,这很好,但在将其转换为浮动之前,您需要替换薪资中的

e.salary = col[2].lstrip('$').replace(',','')

您可能还并没有意识到这一点,但python在转换为一种数字类型时不允许字符串中使用逗号

如果数据是字符串,则可以使用
translate
。如果是unicode,IIRC可能会出现一些边缘情况,
replace
是更好的选择

e.salary = col[2].translate(None, '$,')
e.salary = col[2].replace('$', '').replace(',','')
建议使用上面的
col[2].lstrip(“$”)
,这很好,但在将其转换为浮动之前,您需要替换薪资中的

e.salary = col[2].lstrip('$').replace(',','')

这对一个值有效,但我仍然需要从一列跨越9000行的薪水中删除$。然后我需要作为浮点进行分析,并调用最小值和最大值。非常感谢!为什么?这与OP所做的有何不同?这对一个值有效,但我仍然需要从跨越9000行的一列薪水中删除$。然后我需要将其解析为一个float并调用min和max。非常感谢!为什么?这与OP所做的有何不同?当你第一次没有得到答案时,再次问同样的问题是强烈反对的;重复的冒犯行为最终可能导致禁令。编辑你的第一个问题实例以改进它,不要简单地重新问。(一旦你赢得了足够的声誉,你也可以对那些没有得到足够关注的问题给予奖励,但这是你应得的特权)……既然你已经得到了新版本的答案,删除旧版本可能是最好的方法——但一定要避免再次犯同样的错误。你还需要删除逗号吗?当你第一次没有得到答案时,再问同样的问题是强烈反对的;重复的违规行为最终会导致禁令。编辑你r第一次提出问题时,不要简单地重复提问。(一旦你赢得了足够的声誉,你也可以对那些没有得到足够重视的问题给予奖励,但这是你应得的特权)……既然你已经得到了新副本的答案,删除旧副本可能是最好的方法——但一定要避免再次犯同样的错误。你还需要删除逗号吗?