如何在将它作为浮点数传递之前从值中删除$?

时间:2016-05-01 17:13:56

标签: python python-3.5

我尝试了几种从{$ 95,800.50]的值列中删除$的方法。

我想在一列工资上调用minmax但首先我必须将其解析为浮点数但由于$而无法解析。

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)

3 个答案:

答案 0 :(得分:2)

使用.lstrip("$")去除" $"从前面。这可以避免在没有" $"的情况下为您的代码提供薪水的情况下删除第一个字符。在前面"
例如:

e.salary = col[2].lstrip("$")
顺便说一句,考虑将你的工资存储在int(以美分为单位而不是以美元为单位),因为浮点数不准确,例如0.1 + 0.2!= 0.3。或者您可以使用内置在decimal库中的python代替。

答案 1 :(得分:1)

您可能没有意识到这一点,但是当转换为其中一种数字类型时,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(',','')

答案 2 :(得分:0)

您可以尝试:

e.salary = col[2][1:]