2016-05-01 4 views
0

[$ 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) 
+0

答えを得られないときに同じ質問をもう一度聞くと、ここでは最初に強く怒られます。反復犯罪は最終的に禁止につながる可能性があります。質問の最初のインスタンスを編集して改善してください。単に再質問するだけではありません。 (十分な評判を得たら、十分な注意を払わない質問に対しては賞金を払うこともできますが、これは特典です)。 –

+0

...あなたは既に新しいコピーについて回答を得ているので、古いものを削除するのが最良の方法かもしれませんが、同じミスをもう一度繰り返すことは避けてください。 –

+0

カンマも削除する必要がありますか? –

答えて

0

あなたは試すことができます:

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

これは1つの値に対して機能しますが、9000行にまたがる給与の1つの列から$を削除する必要があります。次に私は浮動小数点として解析し、minとmaxを呼び出す必要があります。本当にありがとう! – Christopher

+0

なぜですか? OPとはどのような違いがありますか? – ppperry

2

使用.lstrip("$")を前から "$" を取り除くために。これは、例えば、あなたのコードは、前に「$」せずに給料を与えた場合の最初の文字」
を取り除く回避:

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

ところで、int型のは(セントに全力を尽くすように、あなたの給与を格納考えます浮動小数点数は正確ではないので、たとえば0.1 + 0.2!= 0.3などです。あるいは、decimalライブラリでビルドされたPythonを使用することもできます。

1

これを実現していないかもしれませんが、数値型のいずれかに変換する

d ataは文字列で、translateを使用できます。それはユニコードだ場合、IIRCは、いくつかのエッジケースがあるかもしれませんし、replaceは良いオプション

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

col[2].lstrip('$')上記素晴らしいですを使用するための提案をされますが、それはfloat型にキャストする前に、給料で,を交換する必要があります。

e.salary = col[2].lstrip('$').replace(',','') 
関連する問題